开发者社区> 问答> 正文

关于LINUX fork 和 printf 的问题

大家好,最近遇到点问题,自己查了下,但是没有得到答案(自己都不知道查到的东西是不是对的),所以来这里像大家提问,希望大家不令赐教。

关于fork和printf的疑问。下面是两个代码

int i;
for(i=0;i<2;i++){
    fork();
    printf("-");
}
int i;
for(i=0;i<2;i++){
   fork();
   printf("-\n");
}

这两个程序各能打印几个“-”,为什么,我自己查了下,可是没找到答案,开始以为是printf的缓冲闹的鬼,可是如果第二个程序打印“-*”就不会出现"n"的问题。希望知道的同学,告知我答案,并解释下原理,不胜感激。

展开
收起
a123456678 2016-06-13 10:42:24 1909 0
1 条回答
写回答
取消 提交回答
  • printf是行刷新的,而n,是行刷新标志。如果没有遇到n只有在缓冲区满的时候才会打印。

    而子进程是继承父进程的缓冲区的,所以结果就应该是8和6。

    同学的分析,感觉很正确,关于行刷新,n为刷新标志,子进程继承父进程缓冲区,这几点都是正确的。

    2019-07-17 19:35:17
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载