fork复制一个进程其中子进程返回值为0,父进程返回值为子进程的pid,因此可以用此方法用来分断父子进程
//此时输出三个A三个B
1 # include <stdio.h>
2 # include<sys/types.h>
3 # include <unistd.h>
4 int main()
5 {
6 int i;
7 for(i=0;i<2;i++)
8 {
9 pid_t pid=fork();//复制进程
10 if(pid==0)在子进程中
11 printf("A\n");
12 else//在父进程中
13 printf("B\n");
14 }
15 }
输出方式:
输出4个A 4个B
1 # include <stdio.h>
2 # include<sys/types.h>
3 # include <unistd.h>
4 int main()
5 {
6 int i;
7 for(i=0;i<2;i++)
8 {
9 pid_t pid=fork();//复制进程
10 if(pid==0)在子进程中
11 printf("A");
12 else//在父进程中
13 printf("B");
14 }
15 }
两段代码看似一样,但却在printf中一个有\n 一个没有\n \n相当于强制弹出缓冲区
因此当i=1时在缓冲区里面还有i=0时输出的数据,在复制时缓冲区中数据也复制给子进程