开发者社区> 问答> 正文

关于LINUX fork 和 printf 的问题

a123456678 2016-06-13 10:42:24 814

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

关于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"的问题。希望知道的同学,告知我答案,并解释下原理,不胜感激。

Linux
分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:35:17

    printf是行刷新的,而n,是行刷新标志。如果没有遇到n只有在缓冲区满的时候才会打印。

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

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

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程