fork实例

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时输出的数据,在复制时缓冲区中数据也复制给子进程
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值