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()
)