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