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;
}
ブロックデバイスであるため、stdout は表示されません。しかし、そうではないので 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 のブロック デバイスであるということですか?