sys.stderr是Python3中的块设备还是字符设备?

在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中的块设备?

如果你没有看到stderr,那么你在Python3上,当连接到tty和block-bufferred时,文本IO层被line-bufferred,否则不管-u选项。

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