//fork_test.c
//Linux/Unix系统中内置头文件,包含了许多系统服务的函数原型,例如read、write和getpid函数等
#include <unistd.h>
#include <stdio.h>
/**
* fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
* 1)在父进程中,fork返回新创建子进程的进程ID;
* 2)在子进程中,fork返回0;
* 3)如果出现错误,fork返回一个负值;
*/
int main(int argc, char const *argv[])
{
pid_t fpid; //fpid表示fork函数返回的值
int count=0;
fpid=fork(); //返回值:根据是父进程还是子进程不同而值不同
if (fpid < 0)
printf("error in fork!");
else if (fpid == 0) { //子进程返回值为0
printf("我是子进程,getpid=%d,fpid=%d\n",getpid(),fpid);//getpid是获取当前进程的id,还有getppid是获取父进程的id
count++;
} else { //父进程返回的是子进程的id;父进程里的当前id就是子进程里返回的进程id
printf("我是父进程getpid=%d,fpid=%d\n",getpid(),fpid);
count++;
}
printf("统计结果是: %d\n",count);
return 0;
}
执行结果:
image.png
网友评论