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