0
如果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)
这对管道/终端当然不起作用。
Similar way to check for the same file in WinAPI。
这应该帮助:http://stackoverflow.com/questions/12502552/can-i-check-if-two-file-or-file-descriptor-numbers-refer-to-在同一的文件 – isedev