使用system()执行后台进程

Executing a background process with system()

本文关键字:执行 后台进程 system 使用      更新时间:2023-10-16

我尝试使用如下命令执行一个进程:

系统("zsh和");

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

不管在后台运行的是什么&符号,也不管system()会做什么,您都是在启动一个交互式shell。当启动交互式shell时,它会寻找要连接的控制台,如果连接失败,它会寻找要处理的标准行。如果失败,则退出。

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

#include <stdio.h>
int main()
{ 
   return system("sleep 100 &");
} 

这是因为zsh和所有shell绑定stdin,它不能在后台运行,所以它崩溃了。