您的位置:首页 > 其它

一张图解决一道笔试题 --- 理解fork函数

2014-03-18 16:19 162 查看
下面的程序一共输出多少个“-”?()

#include <stdio.h>
#include <unistd.h>

int main(void)
{
inti;
for(i=0; i<2; i++){
fork();
printf("-");
}
return 0;
}
A. 2 B. 4 C. 6 D. 8



由于printf没有清理缓冲区,所以图中有些地方有相应的+1,+2,就是子进程对父进程拷贝的同时,子进程的输出缓冲区也做了同样拷贝,父进程维持自身不变(注意父子进程角色的变化),从图中很容易得出,本题目在 i < 2 时,输出是8个“-”,题目修改,比如 i < 3,那么输出将会是24个“-”。

如果printf有清理缓冲区,那么相应的输出就没有图中对应的print+了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: