您的位置:首页 > 其它

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

2014-09-11 21:36 218 查看
下面的程序一共输出多少个“-”?()

[cpp] view
plaincopy





#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+了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: