前言:题源
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(void)
{int i;for(i=0; i<2; i++){fork();printf("-");}wait(NULL);wait(NULL);return 0;
}
知道一点fork()这个系统调用的人都知道,这个题是6个“-“被打印,但是答案是8个“-”;
提醒:fork()时,子进程会拷贝父进程的缓冲区........(即刚开始父进程fork()后形成的一个子进程和自己在执行了printf("-");之后缓冲区会有一个"-"没有打印出来,第二次循环时,遇到fork();连同缓冲区里的"-"也拷贝走了;
也就是说:如果printf();后面有个'\n'的话(会刷新缓冲区),答案就是六个"-";
评论区有人留言:
printf(“_”) 不加\n,属于挖坑
确实如此,之前C语言就出过这种事儿....