问题A:
鉴于下面的代码,我理解当你调用一个fork时,大多数情况下,如果它的资源被传递给子进程.现在,我所查找的几乎所有Fork示例都设置得像我所拥有的那样.从它的外观来看,我不明白如何调用父进程,因为它在else块中.
问题B:
执行子进程中的代码后,它是否自动知道它现在必须进入父进程?我在其他示例中也看到了等待(NULL),如果它将要进入else块,那等待的作用是什么.假设我想要执行同一父项的两个子进程,这两个是否并行运行,然后在完成后运行父代码?谢谢.
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if(pid == 0){
printf("Hello World");
}
else{
printf("Hello World");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你有点误解了这个概念.fork()克隆进程,意味着父进程和子进程都被执行,并且它们在代码中都有相同的if-else(因为它们从fork()向下运行相同的代码).
子进程ID为0,因此它将输入if,父进程ID不为0,因此它将进入else.这是一种让每个进程都做自己的事情的方法,即使它们具有相同的代码.