2016-03-31 80 views
0

如果stdoutstderr被shell完全缓冲并重定向到相同的文件,文件内容将会混乱。如何检查文件指针/描述符/句柄是否与同一个文件/管道/终端相关联?

是否有方法检查文件指针/描述符/句柄的底层文件/管道/终端在C++和Python中是否相同?

只有将stdoutstderr重定向到同一个文件时,才应禁用缓冲。编号:
谢谢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

+1

这应该帮助:http://stackoverflow.com/questions/12502552/can-i-check-if-two-file-or-file-descriptor-numbers-refer-to-在同一的文件 – isedev

回答

相关问题