使用exec()时如何终止子进程

时间:2015-03-01 17:43:14

标签: unix posix fork

我理解在创建分叉子进程时,该进程可以通过exit()终止,但是当子进程执行另一个程序(execvp(),execlp()等等)时,之后编写的任何代码都会被忽略。那时子进程如何终止?它如何告诉父母已经结束了? 谢谢!

1 个答案:

答案 0 :(得分:1)

exec时子进程不会退出。会发生什么 - 当前流程被exec的任何内容所取代。

  

exec()系列函数用新的过程映像替换当前过程映像。

是的 - exec之后的任何代码都被有效地丢弃了。通常情况下,会发生fork然后exec - 使用新的可执行映像创建子进程,然后等待它完成(或不完成){{1} (这将阻止直到子退出,并收到返回代码)。

当{{1}在您的程序状态中仅{em} 差异时,是fork的返回码 - 这是子pid。当您的孩子拨打waitpid时保持不变。

http://en.wikipedia.org/wiki/Fork-exec