首页 > 解决方案 > 如果孩子调用 exec,wait() 会做什么?

问题描述

如果一个子进程调用 exec,它会终止并使用相同的 pid 创建一个新进程。

wait() 函数会等待子节点或孙子节点终止吗?

标签: cprocessexec

解决方案


如果一个子进程调用 exec,它会终止并使用相同的 pid 创建一个新进程。

不,不完全是。

exec不会创建新进程——它会用新程序覆盖单个进程(旧进程)。所以没有新的孩子(没有“孙子”),也没有新的pid。因此,如果父调用wait,它不会返回,直到exec'ed 程序调用。(事实上​​,exec根本没有父母可以检测到的外部影响。)


推荐阅读