c - 如何检查打开的文件是处于读取模式还是写入模式?

标签 c file

如何检查打开的文件是处于读取模式还是写入模式,即“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/

相关文章:

c - 没有宏扩展的延迟字符串化

perl - 如何在 Perl 中更改、删除或插入文件中的一行,或附加到文件的开头?

java - 如何比较大文本文件?

file - 如何在 cobol 中定义可变长度文件的记录

c - 从c中的随机访问文件中读取

调用使用指针接收数组的函数

c - 在堆栈中搜索

c - 从文件读取到链表

c++ - clion 在每个构建上运行 cmake

在 R 中读取文本文件的特定行