#include <unistd.h>
#include <stdio.h>
int main()
{
for (int i = 0; i < 2; i++)
{
fork();
printf("*");
}
return 0;
}
此段代码会输出8个“*”,因为printf标准输出默认是行缓存,fork子进程会把父进程缓存区同样copy一份。
缓冲机制:
缓冲机制一般分为:全缓冲、行缓冲、无缓冲。
全缓冲:缓冲区满了以后,才发生真正的IO。我们通常用的磁盘文件IO就是这样的。
行缓冲:缓冲区满了以后或者缓冲区收到一个换行符(表示已输入或输出一行),后才发生真正的IO,比如标准输出和标准输入默认的缓冲机制就是行缓冲。
无缓冲:立即发生IO,通常标准出错是不带缓冲的。