【发布时间】:2015-04-19 15:10:42
【问题描述】:
我有一段 C 代码,一个具体的函数,它在 FILE* 上运行。
根据打开FILE* 的模式,有些事情我可以做,也不能做。
有什么方法可以获得FILE*打开的模式吗?
FILE* 是我可以依赖的所有信息,因为它是在程序中的其他地方创建的,实际文件名在它到达我的函数之前早已丢失,我无法影响。
我更喜欢便携式解决方案。
编辑:我对指定哪些用户可以对文件执行什么操作的文件限制不感兴趣。这几乎无关紧要,因为它是在打开文件时处理的。对于这段代码,我只关心开放模式。
【问题讨论】:
-
它在特定的操作系统上吗?或者您想要一个可移植的跨平台解决方案?
-
你怎么可能忘记?使用变量。
-
问题是文件是在我无权修改的程序的一部分中打开的。所以我不会“忘记”,只是在我的函数运行时该信息不可用。我知道这很愚蠢,但我无法从头到尾解决它。
-
请注意,在 POSIX-ish 系统上,您可以使用可读写的文件描述符创建文件,但磁盘上文件的权限可能限制为 000(无法访问任何不是root的人)。从问题中不清楚您是在询问“磁盘上”模式(由
chmod()或open()或creat()设置),还是在询问“文件描述符模式”(由open()确定并可通过fcntl()修改)。如果您确定了您可以做和不能做的不同事情,那么准确回答会更容易。 -
@JonathanLeffler:OP 明确要求“打开 FILE* 的模式”,而不是关于权限的任何内容。