如何检查打开的文件是处于读取模式还是写入模式,即“r”或“w”?
请注意,该文件是使用 fopen
命令打开的,它必须以标准方式而不是特定于平台的 hack 方式打开。
编辑 1:
FILE
数据结构似乎是依赖于实现的。获取它的唯一方法必须在 FILE.flags
变量中,但是在我的 Mingw32 中,它只有 FILE._flags
。
最佳答案
正如 Ezequiel Garcia 提到的,每个 FILE
都有一个关联的文件描述符,您可以通过以下方式查询文件描述符的模式
const int word = fcntl(fd, F_GETFL);
现在一个关键点是如何从word
进入打开方式。
那是问题的主题
How to get the mode of a file descriptor?
我花了一些时间询问、修改和学习才能到达 the answer ,这留下了一些有趣的问题,以及手册页与实验结果之间的重大差距。
我建议您尝试在您的系统 (mingw32) 中使用我发布的代码,看看它会产生什么结果。它将帮助您编写(更多)可移植代码。
关于c - 如何检查打开的文件是处于读取模式还是写入模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37364907/