📄 00000013.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: holly (holly), 信区: Linux <BR>标 题: Re: 求教一个关于进程的小程序 <BR>发信站: BBS 水木清华站 (Fri Jul 30 22:31:46 1999) WWW-POST <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>∶<I> 望高手不吝赐教。感激不尽。
</I><BR>
<BR>用 printf("%d: hee", getpid()) 来一看不就明白了?
<BR>Unix 下默认的终端方式是缓冲的, 只有在回车后或者缓冲满时才输出/输入 <BR> <BR>-- <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.120.13.251] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -