如果stdout
和stderr
已完全缓冲并由shell重定向到同一文件,文件内容将会混乱。
有没有办法检查文件指针/描述符/句柄的底层文件/管道/终端在C ++和Python中是否相同?
仅当stdout
和stderr
被重定向到同一文件时,才应禁用缓冲。
编辑:
谢谢isedev's comment。
这个想法也适用于Python 3.4。
def same_file(file1, file2):
stat1, stat2 = os.fstat(file1.fileno()), os.fstat(file2.fileno())
return (stat1.st_dev == stat2.st_dev) and (stat1.st_ino == stat2.st_ino)
当然,这对管道/终端不起作用。
答案 0 :(得分:2)
没有标准的方法来确定FD实际指的是什么。也可以让多个FD引用同一个文件,这就是使用dup(2)
系列函数时会发生的情况。