stdout缓冲区的疑问

softirq_2 softirq_2 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
int glob = 6;
int main(int argc,char** argv)
{
int fd;
int iRet;
int var;
pid_t pid;
var = 88;
var++;
/*setbuf(stdout, NULL);*/
printf("pid:%d before fork()\n", getpid());
if ((pid = fork()) == 0)
{
glob++;
var++;
}
else if(pid < 0)
{
glob++;
var++;
}
printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var);
return 0;
}


编译之后 直接执行./a.out 会在屏幕上打印出三行
pid:22298 before fork()
pid = 22299, glob = 7, var = 90
pid = 22298, glob = 6, var = 89
但是如果./a.out>kk
cat kk之后
发现kk里面有4行
其中有两行 before fork()
pid:22332 before fork()
pid = 22333, glob = 7, var = 90
pid:22332 before fork()
pid = 22332, glob = 6, var = 89


--------------------------------
感觉有点怪怪的 可能是stdout缓冲区的原因把
我加上setbuf(stdout, NULL)这条语句就好了
但是不知道原因
请高手解释一下
...全文

相关推荐

C语言中printf()缓冲问题详解

主要给大家介绍了关于C语言中printf()缓冲问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

weixin_38725623

关于sys.stdout和print的区别详解

今天小编就为大家分享一篇关于sys.stdout和print的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

weixin_38615397

python中stdout输出不缓存的设置方法

考虑以下python程序:复制代码 代码如下:#!/usr/bin/env pythonimport syssys.stdout.write(“stdout1 “)sys.stderr.write(“stderr1 “)sys.stdout.write(“stdout2 “)sys.stderr.write(“stderr2 “)其中的sys.stdout.write也可以换成print。运行这程序,你觉得会输出什么?试验一下,就会发现,其实输出并不是复制代码 代码如下:stdout1 stderr1  stdout2 stderr2而是:复制代码 代码如下:stderr1 stderr2 s

weixin_38524871

python运行时强制刷新缓冲区的方法

今天小编就为大家分享一篇python运行时强制刷新缓冲区的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

weixin_38643269

解析c中stdout与stderr容易忽视的一些细节

本篇文章是对在c语言中stdout与stderr容易忽视的一些细节进行了详细的分析介绍,需要的朋友参考下

weixin_38730331
评论 6
收藏 已收藏
分享
返回顶部
softirq_2
Linux/Unix社区 23,224 成员 74,535 内容