Graph 学习fork过程和图有什么提示吗?

Graph 学习fork过程和图有什么提示吗?,graph,process,fork,Graph,Process,Fork,我是新手。我发现很难找到创建的进程数以及如何绘制图表。有人能给我一些学习的建议吗。多谢各位 另外,fork()>0的含义是什么 它与pid>0相同吗?没有太多内容,您只需要了解fork(2)返回两次:在父母和新生儿中。在父进程中,返回新子进程的进程ID;在子级中,它返回0。在不太可能发生的失败事件中,它将返回-1,并且不会创建新流程-您可能希望在生产级代码中执行错误处理 记住这一点,然后按照代码进行操作 在本例中,我们假设fork(2)总是成功的。第一个fork()发生在这里: pid_t pi

我是新手。我发现很难找到创建的进程数以及如何绘制图表。有人能给我一些学习的建议吗。多谢各位

另外,fork()>0的含义是什么
它与pid>0相同吗?

没有太多内容,您只需要了解
fork(2)
返回两次:在父母和新生儿中。在父进程中,返回新子进程的进程ID;在子级中,它返回0。在不太可能发生的失败事件中,它将返回-1,并且不会创建新流程-您可能希望在生产级代码中执行错误处理

记住这一点,然后按照代码进行操作

在本例中,我们假设
fork(2)
总是成功的。第一个
fork()
发生在这里:

pid_t pid;  
pid = fork();
if (pid == 0)  {
    fork(); 
} 
if (pid > 0)  {
    fork(); fork();
} 
fork();    
在这一行之后,有两个进程正在运行:其中一个进程在
pid
中的值为0,另一个进程的值为其他非零的正值

那么我们有这个,

pid = fork();
if (pid == 0)  {
    fork(); 
}
只有前一个
fork()
的子进程将具有
pid==0
,因此只有一个进程再次分叉

if
之后,我们总共运行了3个进程:一个进程在
pid
中存储了一个正值,另两个进程在
pid
中存储了0

现在我们有了这个:

pid = fork();
if (pid == 0)  {
    fork(); 
}
仅在其中一个过程中输入
(如果
)。在
if
中,该进程分叉两次。然后在第一个
fork()
中创建的子进程再次分叉,因此到
if
结束时,我们总共有6个进程正在运行

最后:

if (pid > 0)  {
    fork(); fork();
}

在这一点上,我们有6个进程正在运行,所有进程都将再次分叉,因此我们最终有12个进程。

没有太多,您只需要了解
fork(2)
返回两次:在父进程中,和在新生儿中。在父进程中,返回新子进程的进程ID;在子级中,它返回0。在不太可能发生的失败事件中,它将返回-1,并且不会创建新流程-您可能希望在生产级代码中执行错误处理

记住这一点,然后按照代码进行操作

在本例中,我们假设
fork(2)
总是成功的。第一个
fork()
发生在这里:

pid_t pid;  
pid = fork();
if (pid == 0)  {
    fork(); 
} 
if (pid > 0)  {
    fork(); fork();
} 
fork();    
在这一行之后,有两个进程正在运行:其中一个进程在
pid
中的值为0,另一个进程的值为其他非零的正值

那么我们有这个,

pid = fork();
if (pid == 0)  {
    fork(); 
}
只有前一个
fork()
的子进程将具有
pid==0
,因此只有一个进程再次分叉

if
之后,我们总共运行了3个进程:一个进程在
pid
中存储了一个正值,另两个进程在
pid
中存储了0

现在我们有了这个:

pid = fork();
if (pid == 0)  {
    fork(); 
}
仅在其中一个过程中输入
(如果
)。在
if
中,该进程分叉两次。然后在第一个
fork()
中创建的子进程再次分叉,因此到
if
结束时,我们总共有6个进程正在运行

最后:

if (pid > 0)  {
    fork(); fork();
}
在这一点上,我们有6个进程正在运行,它们都将再次分叉,因此我们最终有12个进程