最近做操作系统实验发现输出重定向后文件为空的情况,处于死循环内的printf
无法实时重定向到文件中。
但在满足某些条件的情况下文件内会有输出,所以实验探索文件重定向
的机制
int main(){
int i = 0, j = 10, sum = 0;
while(i < 1000){
printf("this*test\n");
i++;
}
printf("**\n");
while(1){}
return 0;
}
实验通过修改while
条件的范围发现,输出到文件的字符数总是4096
的倍数。推测输出重定向缓冲区大小为4096
字节,只有当缓冲区存满
或程序结束
时会将缓冲区内容输出并刷新。
该结论还有待以后查看linux源码验证。