Linux unix fork()理解
我知道这是一个新手问题,但我的理解是父进程现在会像父进程一样派生一个新的子进程,这意味着子进程也应该派生一个子进程,等等。。。实际上,这只生成一个子进程。我无法理解子进程将执行什么代码?子进程从最后一个进程停止的确切位置开始执行,即fork语句之后。如果您想永远使用fork,就必须将其放入while循环。子进程在fork语句之后的最后一个停止点开始执行。如果你想永远用叉子叉,你必须把它放在一个while循环中。你错过了一个分号 但是孩子(还有父母)在Linux unix fork()理解,linux,unix,fork,Linux,Unix,Fork,我知道这是一个新手问题,但我的理解是父进程现在会像父进程一样派生一个新的子进程,这意味着子进程也应该派生一个子进程,等等。。。实际上,这只生成一个子进程。我无法理解子进程将执行什么代码?子进程从最后一个进程停止的确切位置开始执行,即fork语句之后。如果您想永远使用fork,就必须将其放入while循环。子进程在fork语句之后的最后一个停止点开始执行。如果你想永远用叉子叉,你必须把它放在一个while循环中。你错过了一个分号 但是孩子(还有父母)在分叉发生后继续。从应用程序编程的角度来看,fo
分叉发生后继续。从应用程序编程的角度来看,fork
(与所有代码一样)是“原子的”
这两个进程之间唯一的区别(在fork
之后有概念上独立的内存空间)是fork
缺少分号的结果
但是孩子(还有父母)在分叉发生后继续。从应用程序编程的角度来看,fork
(与所有代码一样)是“原子的”
这两个进程(在fork
之后具有概念上独立的内存空间)之间的唯一区别是fork
的结果,正如大家提到的,子进程也在fork()
完成后开始执行。因此,它不再调用fork
您可以在以下非常常见的用法中清楚地看到:
int main(){
fork();
}
正如大家提到的,在fork()
完成之后,子级也开始执行。因此,它不再调用fork
您可以在以下非常常见的用法中清楚地看到:
int main(){
fork();
}
如果孩子继续调用fork
,那么孩子将有两个fork
s(创建它的那一个和它随后生成的那一个),而家长将只有一个(给它一个孩子的那一个)。fork
的本质是一个进程调用它,两个进程从中返回。如果子进程继续调用fork
,子进程将有两个fork
(创建它的一个和它随后生成的一个),而父进程将只有一个(给它一个子进程的那个)。fork
的本质是一个进程调用它,两个进程从中返回