答案是1024字节。
测试环境:gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04.1)
测试样例:
a.c
#include <unistd.h>
#include <stdio.h>
int main()
{
for(int i=1; i<=1023; i++)
putchar('0'+i%10);
putchar('B');
fork();
return 0;
}
b.c
#include <unistd.h>
#include <stdio.h>
int main()
{
for(int i=1; i<=1024; i++)
putchar('0'+i%10);
putchar('B');
fork();
return 0;
}
a.out
可以看到,父子进程输出相同。子进程完全继承了父进程的输出缓冲区。
b.out
可以看到,相比a.out输出少了很多。因为输出缓冲区超过1024bytes后再装入‘B’时刷新了,只继承给了子进程一个‘B’.