多进程fork()函数,在遇到print()时,会把输出缓冲区复制一份。
printf某些内容时,操作系统仅仅是把该内容放到了stdout的缓冲队列里了,并没有实际的写到屏幕上。但是,只要看到有/n 或是EOF,或是主动刷出,或是缓冲区满,或是文件描述符关闭,或是exit,就会把数据从缓冲区中输出出来(flush)
fork();
print("x");
fork();
print("x");
fork();
print("x");
执行完第二行时程序的缓冲区是
缓冲区1:x
缓冲区2:x
执行完第四行时程序的缓冲区是
缓冲区1:xx
缓冲区2:xx
缓冲区3:xx
缓冲区4:xx
执行完第六行时程序的缓冲区是
缓冲区1:xxx
缓冲区2:xxx
缓冲区3:xxx
缓冲区4:xxx
缓冲区5:xxx
缓冲区6:xxx
缓冲区7:xxx
缓冲区8:xxx