2011-04-17 32 views
3

我试图使用类似下面的执行处理:执行与系统()一个后台进程

系统(“zsh的&”);

我不认为它的工作原理,但因为过程中没有显示出来。为什么它不起作用?应该如何改变?

+0

不'&'暗示的背景,因此它不应该出现是不是?你有没有检查在后台运行的作业? – Sadique 2011-04-17 02:31:02

+0

传递给系统的实际命令字符串是什么?无论你传递给系统的shell(通常是/ bin/sh),所以你可以尝试用'/ bin/sh -c“命令测试你的命令。 – 2011-04-17 02:32:34

回答

1

下面的代码工作完美,使用HTOP我可以看到睡眠仍在运行我的应用程序终止后。我没有看到它在代码中应该有什么不同。

#include <stdio.h> 

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

这是因为zsh的所有炮弹绑定标准输入,它不能在后台,因此坠毁。这也是为什么睡在背景中的原因。

2

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