C++ 使用system()执行后台进程
我尝试使用如下方式执行流程: 系统(“zsh&”)C++ 使用system()执行后台进程,c++,linux,process,background,C++,Linux,Process,Background,我尝试使用如下方式执行流程: 系统(“zsh&”) 但是我认为它不起作用,因为这个过程没有出现。为什么不起作用?应该如何更改?下面的代码工作得很好,使用htop,我可以看到在我的应用程序终止后,睡眠仍在运行。我看不出你的代码应该有什么不同 #include <stdio.h> int main() { return system("sleep 100 &"); } #包括 int main() { 返回系统(“睡眠100&”); } 这是因为zsh和所有sh
但是我认为它不起作用,因为这个过程没有出现。为什么不起作用?应该如何更改?下面的代码工作得很好,使用htop,我可以看到在我的应用程序终止后,睡眠仍在运行。我看不出你的代码应该有什么不同
#include <stdio.h>
int main()
{
return system("sleep 100 &");
}
#包括
int main()
{
返回系统(“睡眠100&”);
}
这是因为zsh和所有shell都绑定了stdin,它无法在后台运行,所以崩溃了。这也是为什么“在后台睡眠”起作用的原因。无论在后台运行什么符号,或者system()将执行什么操作,您都在启动一个交互式shell。当您启动交互式shell时,它会查找要连接的控制台,如果连接失败,它会查找要处理的stdin行。如果做不到这一点,它就会退出。这就是正在发生的事情。难道&
不意味着背景,因此它不应该出现,不是吗?您是否检查了后台运行的作业?您传递给系统的实际命令字符串是什么?无论您传递什么,都会传递给系统的shell(通常是/bin/sh),因此您可以尝试使用/bin/sh-c“您的命令&”
进行测试。