这是我的小程序:
#include <unistd.h>
#include <stdio.h>
int main() {
printf("1");
fork();
printf("2");
fork();
return 0;
}
此代码的输出为12121212
,我问:
为什么打印时间超过122
?
答案 0 :(得分:7)
因为printf是缓冲的,只有在程序退出时才会打印文本。尝试在每次打印后刷新标准输出。
答案 1 :(得分:0)
另一种解决方案是使用write + sprintf
e.g。
char s[10];
sprintf(s,"four is %d",4);
write(STDOUT_FILENO,s,sizeof(s));
答案 2 :(得分:0)
如果printf()
转到终端,则默认为线路缓冲。只需打印"1\n"
和"2\n"
即可解决您的问题。