Python 如何检查文件指针/描述符/句柄是否与同一文件/管道/终端关联?

Python 如何检查文件指针/描述符/句柄是否与同一文件/管道/终端关联?,python,c++,io-redirection,buffering,Python,C++,Io Redirection,Buffering,如果shell对stdout和stderr进行了完全缓冲并将其重定向到同一个文件,则文件内容将变得混乱 有没有方法可以检查C++中的文件指针/描述符/句柄的底层文件/管道/终端是否相同? 仅当stdout和stderr重定向到同一文件时,才应禁用缓冲 编辑: 谢谢你的帮助 这个想法在Python3.4中也适用 def same_file(file1, file2): stat1, stat2 = os.fstat(file1.fileno()), os.fstat(file2.filen

如果shell对
stdout
stderr
进行了完全缓冲并将其重定向到同一个文件,则文件内容将变得混乱

有没有方法可以检查C++中的文件指针/描述符/句柄的底层文件/管道/终端是否相同? 仅当

stdout
stderr
重定向到同一文件时,才应禁用缓冲

编辑:
谢谢你的帮助

这个想法在Python3.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)
这当然不适用于管道/终端


.

没有标准的方法来确定FD实际上指的是什么。也可以让多个FD引用同一个文件,这是使用
dup(2)
函数系列时发生的情况


另请参见

没有标准方法来确定FD实际指的是什么。也可以让多个FD引用同一个文件,这是使用
dup(2)
函数系列时发生的情况

另请参见

这应该有帮助:这应该有帮助: