gpt4 book ai didi

c++ - 从 FILE 结构获取文件模式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:55 26 4
gpt4 key购买 nike

我有一段 C 代码,具体来说是一个函数,它对 FILE* 进行操作。

根据打开 FILE* 的模式,有些事情我可以做,有些事情不能做。

有什么方法可以获取打开 FILE* 的模式?

那个 FILE* 是我可以依赖的所有信息,因为它是在程序的其他地方创建的,实际的文件名在它到达我的函数之前早就丢失了,我不能影响。

我更喜欢可移植解决方案。

编辑:我对指定哪些用户可以对文件做什么的文件限制不感兴趣。这几乎是无关紧要的,因为它是在打开文件时处理的。对于这段代码,我只关心打开模式。

最佳答案

在 POSIX(和足够相似的)系统上,fcntl(fileno(f), F_GETFL) 将以传递给 open 的形式返回打开文件的模式/标志(不是 fopen)。要检查它是以只读、读写还是只写方式打开的,您可以执行以下操作:

int mode = fcntl(fileno(f), F_GETFL);
switch (mode & O_ACCMODE) {
case O_RDONLY: ...
case O_WRONLY: ...
case O_RDWR: ...
}

您还可以检查 O_APPEND 等标志

关于c++ - 从 FILE 结构获取文件模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32919576/

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