gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:19 27 4
gpt4 key购买 nike

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

程序流程如下:

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

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

最佳答案

如果您将& 符号附加到您的命令,然后使用system() 执行您的命令,那么您的程序将继续运行,而您的命令同时运行在的背景。例如:

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

关于c++ linux从程序执行命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com