关于重定向和缓存区

//标准I/O是缓冲的,如果标准输出到终端设备,则它是⾏行缓冲,否则它是全
//缓冲
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
const char * msg ="hehe,ni shi ge hao ren \n";
int g_val = 0;
int main()
{
   int val = 0;     
   printf("before fork:\n");
  //本来是行缓冲,但是重定向的时候变为全缓存,所以当他被重定向到文件中
  //before fork 会被打印两次 
    
   write(1,msg,strlen(msg)); //wu huan chong 
   pid_t id = fork();
   if(id < 0)
   {
       // perror("fork");
       printf("%d   %s \n",errno,strerror(errno));
       exit(1);
   }
   else if(id == 0)
   {//child
       printf("i am child pid:%d ppid:%d\n",getpid(),getppid());
       val ++;
       g_val++;
       printf("chirld:%d %d %p %p \n",val,g_val,&val,&g_val);
   }
   else
   {//father
       printf("i am father pid:%d ppid:%d\n",getpid(),getppid());
       printf("father:%d %d %p %p \n",val,g_val,&val,&g_val);
       sleep(1);
   }
   return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值