为什么这段代码打印两次?
可能重复:
在linux gcc中使用fork()
#include void main () { printf ("ciao"); fork (); }
我有一些关于C优化的想法,但我不确定。 希望你知道答案。
代码可能会打印"ciao"
两次,因为标准输出是缓冲IO,因此标准输出的内部缓冲区将在子进程中复制,并且当每个进程(父进程和子进程)退出时,两个缓冲区都会刷新。
它与优化无关。
当调用fork()时,父进程和子进程都inheritance它,因此它们都将inheritance它
当他们冲洗缓冲区时打印出“ciao”。 如果你叫fflush(stdout);
在调用fork之前,它只会打印一次