BBS水木清华站∶精华区
发信人: boyalone (不笑), 信区: Linux
标 题: Re: 求教一个关于进程的小程序
发信站: BBS 水木清华站 (Fri Jul 30 18:10:37 1999)
【 在 luyy75 (铿锵玫瑰) 的大作中提到: 】
∶ 我看到一个小程序,虽然代码很简单,但改动一处后结果令我百思不得其解。
∶ #include <stdio.h>
∶ #include <sys/types.h>
∶ #include <unistd.h>
∶ int main()
∶ {
∶ fork(); printf("hee\n");
∶ fork(); printf("ha\n");
∶ fork(); printf("ho\n");
∶ return(0);
∶ }
∶ 代码就这么几行,很简单。运行之后:结果应该是fork出8个进程(包含父进程),
∶ 产生14行输出。(hee,ha,ho的混合)
∶ 但我若把上面每一句printf中的\n去掉,结果令我大感意外。
∶ heehahoheehahoheehahoheehahoheehahoheehahoheehahoheehaho
∶ 共出现了8组heehaho且整齐排列。反复运行结果都一样。不是说FORK出的子进程
∶ 紧接着下面一句执行吗?那么应该是除了第一个fork之后的两个进程都输出hee之
∶ 外其它进程都不应该输出hee了,ha也是一样(输出4个),只有ho是每个进程都输
∶ 出。可结果为什么是这样?\n到底起了什么作用。
~~~~~~~~~~~~~~~~~~~
老问题了,上了os课的都明白
子进程会继承父进程的buffer
不加\n的输出会留在buffer中
输出结果可想而知
∶ 望高手不吝赐教。感激不尽。
--
\ /
\ o --> <-- o /
\++++++++++++++++++++++++++++++++++++++++/
两小球何时相撞?
解:
F=Ma
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.7.126]
BBS水木清华站∶精华区