【问题标题】: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(),并在父进程中等待,父进程如何从子进程获得返回码?
【发布时间】:2016-02-29 21:34:16
【问题描述】:

我正在学习fork()exec() 等,我在教科书中遇到了一些我不完全理解的内容。

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

在子进程中,我们调用exec()

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

据我了解,成功的exec() 调用永远不会返回。如果我们在子进程中调用exec(),如果子进程永远无法从exec() 返回控制权,我们怎么能在父进程中等待子进程返回?

我在这里唯一的猜测是,发生的事情是父母认为它在等待孩子,实际上是在等待使用 exec 创建的新进程? IE。通常我会fork() 并等待孩子。如果我 fork() 并执行 UNIX 程序 date 然后等待父级中的子级,我现在真的在等待 date 退出吗?

谢谢!

【问题讨论】:

    标签: unix process fork exec wait


    【解决方案1】:

    你需要区分进程程序。调用exec 在同一进程中运行不同的程序。 exec 函数不会返回(除非发出错误信号),因为它终止了调用的程序。但是,该进程被重用于运行不同的程序。在某种程度上,从运行exec的进程来看,exec函数作为新程序的入口点返回。

    从父进程的角度来看,有一个子进程。这就是父母所知道的一切。父母不知道孩子叫exec,除非它监视并通过诸如运行ps等间接方式发现。父进程只是在等待子进程退出,不管子进程正在运行什么程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 2018-09-09
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多