Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux unix fork()理解_Linux_Unix_Fork - Fatal编程技术网

Linux unix fork()理解

Linux unix fork()理解,linux,unix,fork,Linux,Unix,Fork,我知道这是一个新手问题,但我的理解是父进程现在会像父进程一样派生一个新的子进程,这意味着子进程也应该派生一个子进程,等等。。。实际上,这只生成一个子进程。我无法理解子进程将执行什么代码?子进程从最后一个进程停止的确切位置开始执行,即fork语句之后。如果您想永远使用fork,就必须将其放入while循环。子进程在fork语句之后的最后一个停止点开始执行。如果你想永远用叉子叉,你必须把它放在一个while循环中。你错过了一个分号 但是孩子(还有父母)在分叉发生后继续。从应用程序编程的角度来看,fo

我知道这是一个新手问题,但我的理解是父进程现在会像父进程一样派生一个新的子进程,这意味着子进程也应该派生一个子进程,等等。。。实际上,这只生成一个子进程。我无法理解子进程将执行什么代码?

子进程从最后一个进程停止的确切位置开始执行,即fork语句之后。如果您想永远使用fork,就必须将其放入while循环。

子进程在fork语句之后的最后一个停止点开始执行。如果你想永远用叉子叉,你必须把它放在一个while循环中。

你错过了一个分号

但是孩子(还有父母)在
分叉发生后继续。从应用程序编程的角度来看,
fork
(与所有代码一样)是“原子的”


这两个进程之间唯一的区别(在
fork
之后有概念上独立的内存空间)是
fork
缺少分号的结果

但是孩子(还有父母)在
分叉发生后继续。从应用程序编程的角度来看,
fork
(与所有代码一样)是“原子的”


这两个进程(在
fork
之后具有概念上独立的内存空间)之间的唯一区别是
fork
的结果,正如大家提到的,子进程也在
fork()
完成后开始执行。因此,它不再调用
fork

您可以在以下非常常见的用法中清楚地看到:

int main(){
    fork();
}

正如大家提到的,在
fork()
完成之后,子级也开始执行。因此,它不再调用
fork

您可以在以下非常常见的用法中清楚地看到:

int main(){
    fork();
}

如果孩子继续调用
fork
,那么孩子将有两个
fork
s(创建它的那一个和它随后生成的那一个),而家长将只有一个(给它一个孩子的那一个)。
fork
的本质是一个进程调用它,两个进程从中返回。

如果子进程继续调用
fork
,子进程将有两个
fork
(创建它的一个和它随后生成的一个),而父进程将只有一个(给它一个子进程的那个)。
fork
的本质是一个进程调用它,两个进程从中返回