0
我正在寻找一种方法来从我的C++程序中调用特定的命令行调用。这个命令需要被称为多次异步。然后从用户输入中取消。C++ linux从程序执行命令行
程序流程如下:
- 启动方案等待用户推某个按钮。
按下时,需要发出命令。
bmdcapture -C 0 -m 2 -F nut -m 11 -V 3 -A 2 -f pipe:1 | avconv -y -i - -strict experimental -q:v 1 -c:v mpeg4 '/var/www/recvideos/mytest0.mp4'
然后等待用户按下相同的按钮并终止上述命令。
我有按钮按下的逻辑,但无法找到一种方法来执行命令,而无需它接管程序。我已经看过叉(),但我不确定它会使用按钮按下逻辑。
任何帮助,将不胜感激
这里是按键守望在这篇文章的时候,我与并行线程玩。
while(1)
{
if (kbhit()) {
int keypressed = getch();
//printw("End Capture Key pressed! It was: %d\n", keypressed);
printw("Capture will begin again when ctrl+r is pressed. \n");
if(keypressed == 18)
{
//exit capture logic here
int j;
for(j=0; j < 1; j++)
{
pthread_cancel(threads[j]);
}
captureActive = false;
break;
}
}
else if(!captureActive)
{
printw("Starting Capture...\n");
//Begin Capture on all active cards
int rc;
int i;
for(i=0; i < 1; i++)
{
rc = pthread_create(&threads[i], NULL, Capture, (void*)&threads[i]);
if(rc)
{
cout << "ERROR: unable to create thread: " << rc << endl;
exit(-1);
}
}
captureActive = true;
}
else {
//printw("capturing...\n");
refresh();
usleep(1000000);
}
}
好的,所以该对话的扩展将是如何在用户交互中终止执行该命令? – user3740847
有几种方法可以完成。一种方法是使用信号。如果用户在后台运行命令时仍然与主程序进行交互,并且用户按下某个键以指示该命令应该停止,那么主程序可以向该命令发送一个信号,告诉它停止。你可以提供一个这样的例子吗? – mti2935
。 – user3740847