从文件中确定(打开的)文件名*

Jam*_*mie 3 c stdio

给定一个stdio FILE *指针,有没有一种方法可以发现(打开)文件的名称?

mkb*_*mkb 8

它看起来(从这里)在POSIX系统上你可以使用fileno()从FILE*获取文件描述符,然后使用fstat从文件描述符中获取stat信息.stat结构包含设备编号和inode编号.您可以在文件系统中检查与inode匹配的文件.对于一个充满东西的文件系统来说,这显然需要一些时间.

这不可能的原因(如链接文章中所述)是如果某个流类似于stdin或stdout,或者它是一个已被删除的打开文件,则它可以没有文件名.由于硬链接,它可以有多个名称.

链接的文章提到了这个comp.lang.c常见问题解答,简要概述了这个问题的不可解决性.

编辑:谢谢你的纠正.