gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:09:17 26 4
gpt4 key购买 nike

如果 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 .

最佳答案

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

另见 Getting Filename from file descriptor in C

关于python - 如何检查文件指针/描述符/句柄是否关联到同一文件/管道/终端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36321889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com