c ++ linux从程序执行命令行

时间:2014-06-14 17:27:26

标签: c++ linux

我正在寻找一种从我的c ++程序调用特定命令行调用的方法。此命令需要多次调用async。然后从用户输入中取消。

计划流程如下:

  • 启动程序等待用户按下某个按钮。
  • 按下时,需要触发命令。

    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'
    
  • 然后等待用户按下相同的按钮并终止上述命令。

我有按下按钮的逻辑,但是无法在没有接管程序的情况下找到执行命令的方法。我看过fork(),但我不确定它是否可以按下按钮逻辑。

任何帮助将不胜感激

这是按键观察者,在这篇文章发表时我正在玩pthread。

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);
}
}

1 个答案:

答案 0 :(得分:2)

如果将&符号附加到命令中,则使用system()执行命令,然后程序将继续运行,同时命令在后台同时运行。例如:

sprint(cmd, "/path/to/your/command &");
system(cmd);