这是我的小程序:
#include <unistd.h> #include <stdio.h> int main() { printf("1"); fork(); printf("2"); fork(); return 0; }
这个代码的输出是12121212
,我问:
为什么打印超过122
?
由于printf被缓冲,只有在程序退出时才打印文本。 尝试在每次打印后刷新stdout。
另一个解决方案是使用write + sprintf
例如
char s[10]; sprintf(s,"four is %d",4); write(STDOUT_FILENO,s,sizeof(s));
如果printf()
进入一个终端,它默认是行缓冲的。 只需打印"1\n"
和"2\n"
解决您的问题。