如何检查文件指针/描述符/句柄是否关联到同一个文件/管道/终端
How to check if file pointers/descriptors/handles are associated to the same file/pipe/terminal?
如果stdout
和stderr
被shell完全缓冲并重定向到同一个文件,则文件内容将被打乱。
在C++和Python中,是否有方法检查文件指针/描述符/句柄的底层文件/管道/终端是否相同?
只有当stdout
和stderr
重定向到同一文件时,才应禁用缓冲。
编辑:
感谢isedev的评论。
这个想法也适用于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)
这当然不适用于管道/终端。
在WinAPI中检查相同文件的类似方法。
没有标准的方法来确定FD实际指的是什么。也可以让多个FD引用同一个文件,这就是使用dup(2)
函数族时发生的情况。
另请参阅从C 中的文件描述符获取文件名
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 将 ETW 文件对象与 DiskIO 事件相关联
- MacOS应用程序文件关联
- 如何调用 ShellExecute 以使用 C++ 打开具有特定程序的文件,而无需关联相同的文件扩展名
- QML应用程序编译一个 *form.ui.qml文件,但忽略了关联的.qml文件
- 如何启动文件/目录/URL的关联应用程序
- 如何用java将文件与程序关联起来
- 文件文件夹关联或归属
- 试图捕获不平衡的分隔符.我需要显示与之关联的行号.遇到问题和我的测试文件
- C++程序需要一个文件关联
- 如何检查文件指针/描述符/句柄是否关联到同一个文件/管道/终端
- 文件类型以编程关联和文件位置(Windows)
- 如何打开程序与其文件扩展名关联的文件
- 查找与__declspec(dllexport)相关联的dll文件
- 来自两个不同文件的关联值
- tlb文件是否具有关联体系结构
- c++在类中创建ifstream/ofstream,关联预制文本文件
- 如何将从文件读取的字符串与枚举值相关联