linux文件重定向问题

最近做操作系统实验发现输出重定向后文件为空的情况,处于死循环内的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源码验证。

你可能感兴趣的:(linux)