2

在 C 语言中,如果我编写这样的代码:

#include <stdio.h>
#include <unistd.h>
int main() 
{
    while(1)
    {
        fprintf(stdout,"hello-std-out");
        fprintf(stderr,"hello-std-err");
        sleep(1);
    }
    return 0;
}

标准输出不会显示,因为它是块设备。但是 stderr 会显示,因为它不是。

但是,如果我在Python3中编写类似的代码:

import sys
import time
if __name__ == '__main__':
    while True:
        sys.stdout.write("hello-std-out")
        sys.stderr.write("hello-stderr")
        time.sleep(1)

如果我不刷新这些缓冲区,stdout 和 stderr 都不会显示。这是否意味着 sys.stderr 也是 Python 中的块设备?

4

1 回答 1

4

如果您没有看到 stderr,那么您在 Python3 上,其中文本 IO 层在连接到 tty 时是行缓冲的,否则不管-u选项是块缓冲的。

缓冲问题与字符/块设备无关。

于 2013-01-10T03:14:08.383 回答