我有一段C代码,一个特定的函数,它在FILE*
上运行。
根据FILE*
打开的模式,我可以做什么,不能做什么。
有什么方法可以获得FILE*
打开的模式吗?
FILE*
是我可以依赖的所有信息,因为它是在程序的其他地方创建的,实际的文件名在它到达我的函数之前就已经很久了,而且我无法影响。
我更喜欢便携式解决方案。
编辑:我对文件限制不感兴趣,指定哪些用户可以对文件执行哪些操作。这大多无关紧要,因为它是在文件打开时处理的。对于这段代码,我只关心开放模式。
答案 0 :(得分:4)
在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
等标志
答案 1 :(得分:0)