如果只传递了FILE*,我的代码如何识别传递给fopen()的模式?

sha*_*oth 0 c fopen file

假设我的函数接受a FILE*并且它想知道底层文件是如何打开的 - 具体是哪个mode(例如r或者rb)传入fopen().

mode如果代码只传递FILE*已经打开的文件,我的代码怎么能找到它?

use*_*342 5

在类Unix系统上,您可以使用它fcntl(fileno(fp), F_GETFL, &flags)来检索底层文件描述符的标志.使用O_ACCMODE掩模以获得文件的访问模式,这是一个O_RDONLY,O_WRONLY,O_RDWRDO_APPEND对应于传递到模式字符串值fopen.