我想知道这段代码是如何工作的
#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;
Run Code Online (Sandbox Code Playgroud)
(fork()==0)如果我们在子进程中,则返回 true。对?
然后exit(0)将终止子进程。
那么wait(NULL)如果我们不能进入else案例,除非我们在父进程中,否则如何返回子pid ?
该fork函数创建一个新进程并返回两次:一次返回父进程,一次返回子进程。
在子进程中,fork返回 0 以便if运行调用exit. 在父进程中,fork返回子进程的 pid,因此它进入else它调用的部分,wait一旦子进程退出,该部分将返回子进程的 pid 。