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