如果没有,我们如何在 C 中启动后台进程?
Abhishek
问问题
17431 次
3 回答
9
在 Unix 中, exec() 只是故事的一部分。
exec() 用于在当前进程中启动一个新的二进制文件。这意味着当前在当前进程中运行的二进制文件将不再运行。
因此,在调用 exec() 之前,您需要调用 fork() 来创建一个新进程,以便您当前的二进制文件可以继续运行。
通常,要让当前二进制文件等待新进程退出,您调用 wait*() 系列之一。该函数将使当前进程进入睡眠状态,直到您等待的进程完成。
所以为了创建一个“后台”进程,你当前的进程应该跳过等待的调用。
于 2009-10-02T23:45:04.520 回答
4
使用fork()
调用创建一个新进程,然后 exec() 将程序加载到该进程中。有关更多信息,请参见手册页 ( man 2 fork
, man 2 exec
)。
于 2009-10-02T13:01:07.787 回答
3
fork返回的是孩子的PID,所以常用的成语是:
if(fork() == 0)
// I'm the child
exec(...)
于 2009-10-02T23:50:58.187 回答