Unix父子进程关系

时间:2013-02-16 13:03:39

标签: unix operating-system

我完全理解unix进程创建中的父子关系。但我不明白其背后的基本原理:(为什么我们需要从当前进程分叉创建一个新进程,然后用新代码覆盖其图像?如果有的话?欢呼

1 个答案:

答案 0 :(得分:1)

理由是unix system calls(至少最初是)是由内核完成的“基本”操作。

在实践中,应用程序通常在fork(2)execve(2)之间执行某些特定操作,特别是调用close(2)dup2(2),还sigaction(2)来忽略某些内容信号(可能在fork之前完成了一些pipe(2)个系统调用。

如果你想让一个系统调用一次处理所有这些,那么它将非常复杂,灵活性也会降低。

除了Advanced Linux Programming之外,我建议您阅读一些书籍Advanced Unix Programming(免费和在线)或intro(2)

相反,我发现分离创建流程和执行程序的意图非常自然。我真的不明白你为什么要把这两个操作结合起来。

另见this关于系统调用的答案。