linux进程代码fork案例

来源:互联网 发布:dna计算机 知乎 编辑:程序博客网 时间:2024/06/07 06:49

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,所以没有接着执行。




0 0
原创粉丝点击