使用system()执行后台进程

时间:2011-04-17 02:27:35

标签: c++ linux process background

我尝试使用以下内容执行某个过程:

system(“zsh&”);

我觉得它不起作用,因为这个过程没有显示出来。为什么不起作用?怎么改变?

3 个答案:

答案 0 :(得分:2)

无论在后台运行任何&符号,或者系统()将执行什么操作,您都会启动交互式shell。当您启动交互式shell时,它会查找要连接的控制台,如果失败,它会查找要处理的stdin行。如果失败了,就会退出。这就是发生的事情。

答案 1 :(得分:1)

以下代码完美运行,使用htop我可以看到我的应用程序终止后睡眠仍在运行。我不知道你的代码应该有什么不同。

#include <stdio.h>

int main()
{ 
   return system("sleep 100 &");
} 

答案 2 :(得分:1)

这是因为zsh和所有shell都绑定了stdin,它不能在后台运行,所以它崩溃了。这也是为什么睡在后台工作的原因。