下面的程序一共输出多少个“-”?()
#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+了。