首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

linux上fork函数的有关问题

2012-10-20 
linux下fork函数的问题C/C++ code#includestdio.h#includeunistd.hvoid main(){int ifor(i0i2i++

linux下fork函数的问题

C/C++ code
#include<stdio.h>#include<unistd.h>void main(){    int i;    for(i=0;i<2;i++)    {                fork();        printf("-");            }}

这个程序会打印8个短线,为什么?

[解决办法]
我也是初学,说一下我的见解,printf输出中没有加换行符,所以第一次父进程数除以一个,子进程输出两个(一个是紫禁城本身一个是遗留在父进程中的)第二次循环父进程再输出一个,子进程printf累加前面的三个-一共四个。所有的输出加起来八个,不要问我太详细 仅供参考
[解决办法]


1,父进程会打印2次,因为循环了两次,并生了俩孩子。
2,第一个孩子,打印1次,然后继续循环会有一个孩子,自己与孩子分别打印1次,加起来3次。
3,第二个孩子,打印1次,继续循环就退出了。 一共1次。

加起来6次,但printf使用stdout,是行缓冲,而你没有强制刷新,所以fork会继承,所以多打印了。

热点排行