-1

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

4

1 回答 1

1

基本原理是 unix系统调用(至少最初是这样)是内核完成的“基本”操作。

在实践中,应用程序经常在fork(2)execve(2)之间做一些特定的事情,特别是对close(2)dup2(2)的调用,还有sigaction(2)来忽略一些信号(可能有一些pipe(2 )系统调用在fork) 之前完成。

如果您希望一次使用一个系统调用来处理所有这些,那将非常复杂,而且不太灵活。

除了intro(2)之外,我建议阅读一些书籍,如Advanced Linux Programming(它是免费且在线的)或Advanced Unix Programming

相反,我发现将创建进程和执行程序分开的意图很自然。我真的不明白你为什么要合并这两个操作。

另请参阅有关系统调用的这个我的答案。

于 2013-02-16T13:09:29.967 回答