如果您从 child 进程中 fork() 和 exec(),并在 parent 中等待,那么 parent 如何从 child 中获取 return 代码]?

If you fork() and exec() from the child process, and wait in the parent, how does the parent get a return code from the child?

我正在学习 fork()exec() 等,但我 运行 进入教科书上我不完全理解的内容。

在示例中,进程调用 fork()

在child过程中,我们调用exec().

稍后,在parent中,我们调用wait()

据我了解,成功的 exec() 调用永远不会 return。如果我们在child中调用exec(),我们如何在parent中等待child到return,如果child永远不会return 从 exec() 控制了它?

我唯一的猜测是 parent 认为它正在等待 child,实际上是在等待用 exec 创建的新进程? IE。通常我会 fork() 并等待 child。如果我 fork() 并执行 UNIX 程序 date 然后等待 parent 中的 child,我现在实际上是在等待 date 退出吗?

谢谢!

您需要区分进程程序。在同一进程中调用 exec 运行s 不同的程序。 exec 函数不会 return (除非发出错误信号),因为它会终止调用的程序。但是,该过程会被 运行 另一个程序重用。从某种意义上说,从进程运行宁exec的角度来看,exec函数returns作为新程序的入口

从 parent 的角度来看,有一个 child 过程。 parent 就知道这些了。 parent 不知道 child 调用了 exec,除非它监视它并通过间接方式发现,例如 运行 宁 ps。 parent只是在等待child进程退出,不管child进程恰好是什么程序运行ning.