fork函数复制父进程中的数据段、堆栈,我突发奇想弄个程序,看看子程序到底复制了多少父进程内容。先看程序。
#include<stdio.h>
#include<sys/wait.h>
int main(void)
{
pid_t pid;
printf("second 1,parent pid=%d/n",getpid());
if((pid=fork())<0)
perror("fork error");
else if(pid==0)
{
printf("second 2,parent pid=%d/n",getpid());
exit(0);//(1)
}
else
{
printf("second 3,parent pid=%d/n",getpid());
exit(0);//(2)
}
printf("second 4,parent pid=%d/n",getpid());
printf("the end/n");
exit(0);
}
主要看注释的两个exit():(1)和(2)。
(1)(2)都不去掉,输出结果:
second 1,parent pid=9739
second 2,parent pid=9740
second 3,parent pid=9739
(1)不去掉,(2)去掉,输出结果:
second 1,parent pid=9739
second 2,parent pid=9740
second 3,parent pid=9739
second 4,parent