fork函数位于unistd.h头文件,用来创建一个新的进程,原来的进程依然会存在。
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
pid_t Fork(void)
{
pid_t pid;
if((pid=fork())<0)
{
perror("Fork error");
}
return pid;
}
int main()
{
int x=1;
if(Fork()==0)
{
printf("printf1:x=%d\n",++x);
//exit(0);
}
printf("printf2:x=%d\n",--x);
exit(0);
}
如果没有取消注释,结果是:
printf1:x=2;
printf2:x=1;
printf2:x=0;
可以看出,Fork函数执行后,产生并进入子进程,但是依次执行
printf("printf1:x=%d\n",++x);
printf("printf2:x=%d\n",--x);
最后子进程退出,父进程继续,从if语句判断后开始执行,只会执行 printf("printf2:x=%d\n",--x);
父进程和子进程的数据是来自与程序的拷贝,所以两个进程的变量x之间没有影响。
如果注释被取消,
printf1:x=2;
printf2:x=0;
子进程被exit,所以没有接着执行。