R S*_*hko 9

在Unix中,exec()只是故事的一部分.

exec()用于在当前进程中启动新的二进制文件.这意味着当前正在当前进程中运行的二进制文件将不再运行.

因此,在调用exec()之前,您需要调用fork()来创建一个新进程,以便您当前的二进制文件可以继续运行.

通常,要使当前二进制文件等待新进程退出,您可以调用wait*()系列之一.该函数将使当前进程进入休眠状态,直到您正在等待的进程完成.

因此,为了创建"后台"进程,您当前的进程应该跳过等待的调用.

  • 小心,这会创建一个僵尸进程。 (2认同)

unw*_*ind 5

使用该fork()调用创建一个新进程,然后使用 exec() 将程序加载到该进程中。另请参阅手册页 ( man 2 forkman 2 exec) 以获取更多信息。


Kev*_*son 5

Fork返回子进程的PID,所以常见的习惯用法是:

if(fork() == 0)
    // I'm the child
    exec(...)
Run Code Online (Sandbox Code Playgroud)