C fork()退出(0)和等待(NULL)是如何工作的?

C fork()退出(0)和等待(NULL)是如何工作的?,c,unix,C,Unix,我想知道这个代码是如何工作的 #include<stdio.h> #include<stdlib.h> #include<sys/wait.h> #include<unistd.h> int main() { pid_t cpid; if (fork()== 0) exit(0); else cpid = wait(NULL); printf(

我想知道这个代码是如何工作的

#include<stdio.h> 
#include<stdlib.h> 
#include<sys/wait.h> 
#include<unistd.h> 
  
int main() 
{ 
    pid_t cpid; 
    if (fork()== 0) 
        exit(0);         
    else
        cpid = wait(NULL); 
    printf("Parent pid = %d\n", getpid()); 
    printf("Child pid = %d\n", cpid); 
  
    return 0; 
#包括
#包括
#包括
#包括
int main()
{ 
pid_t cpid;
如果(fork()==0)
出口(0);
其他的
cpid=等待(空);
printf(“父pid=%d\n”,getpid());
printf(“子pid=%d\n”,cpid);
返回0;
(fork()==0)
如果我们在子进程中,则返回true。对吗

然后退出(0)将终止子进程


如果我们不能进入
else
案例,除非我们在父进程中,
等待(NULL)
如何返回子pid?

fork函数创建一个新进程并返回两次:一次返回父进程,一次返回子进程


在子进程中,
fork
返回0,因此
if
部分运行,调用
exit
。在父进程中,
fork
返回子进程的pid,因此它进入
else
部分,在该部分调用
wait
,该部分在子进程退出后返回子进程的pid。

我有一个非常好的websi了解如何使用fork()、exit()和wait()。您可以通过代码示例找到一个非常好的图表

fork
创建新进程,称为子进程,它与执行
fork()调用的进程(父进程)同时运行。
创建新的子进程后,两个进程将执行
fork()
系统调用后的下一条指令。子进程和父进程使用相同的PC(程序计数器)

仅理解fork的链接:

带有wait()和exit()的understand fork链接:

如果您不明白,我有GitHub repo,其中使用fork()、wait()和exit来创建Linux Shell:

如果您想了解更多信息或示例,请告诉我。

中的示例将有助于您的理解。(注意:在孩子中使用
\u exit()