给定一个stdio FILE *
指针,有没有一种方法可以让我发现(打开的)文件的名称?确定文件中的(打开的)文件名*
3
A
回答
8
它看起来(从here),在POSIX系统上,您可以使用fileno()从FILE *获取文件描述符,然后使用fstat从文件描述符获取stat信息。 stat结构包含设备编号和inode编号。您可以检查文件系统中与inode匹配的文件。这显然需要一段时间才能完成一个文件系统。
这是不可能的原因(正如链接文章中所解释的):如果流类似于stdin或stdout,或者它是一个已被删除的打开文件,则该流可以没有文件名。由于硬链接,它也可以有多个名称。
链接文章提到this comp.lang.c FAQ简要概述了这个问题的不可溶性。
编辑:感谢您的更正。
+0
感谢您的回答不仅仅是“不可以”。 – Jamie 2009-05-06 19:25:45
2
不,没有。除此之外,FILE *可能不会引用指定的文件。如果您的应用程序需要此功能,您需要将打开的FILE * s中的某种地图 保留为用于打开它们的文件名。
1
没有标准定义的便携式解决方案。但是,您可以查看您的操作系统提供的API集。 POSIX系统有一个fstat
函数,它带有一个描述符(不是FILE *
)并返回一些信息。
相关问题
- 1. 打开带有文件名“=”的文件
- 2. 确定谁使用C#打开文件
- 3. 确定文件是否打开
- 4. 打开.JAR文件中的HTML文件
- 5. 如何打开文件中的文件?
- 6. 基于excel中的变量文件名VBA打开文件
- 7. 打开其中的文件名存储变量文件
- 8. 打开特定的文本文件
- 9. 插入提示,以确定文件名,打开
- 10. Delphi中的TOpenDialog - 如何只打开给定名称的文件
- 11. 如何在文件中打开具有特定扩展名的文件对话
- 12. 如何在php中打开基于文件名的特定文件?
- 13. Python检测并检索打开的csv文件的文件名
- 14. Python不能打开日文文件名
- 15. WPF TabItem打开文件的名称
- 16. 打开没有扩展名的文件
- 17. 确定在CHM文件中打开它的主题ID
- 18. 如何确定Python中打开文件的大小?
- 19. 将打开的文件保存在特定文件夹中
- 20. 将打开的文件保存在特定文件夹中
- 21. UWP:打开特定文件
- 22. 确定文件夹中未知文件的名称
- 23. 从C++中确定perl文件的行号和文件名
- 24. 如何使用python中的中文名称打开文件
- 25. SSRS提供名为Resource.aspx的文件,尝试打开,接收同名的邮件文件已经打开
- 26. 如何确定Windows中是否打开特定文件?
- 27. 确定文件名,下载
- 28. MATLAB fopen打开没有文件扩展名的文件
- 29. 如何使Firefox打开一个文件名为&的文件?
- 30. 打开文件对话框的文件名作为UTF8
文件描述符是一个整数,它与FILE *不同。我假设你想要FILE *的答案,但你可能想编辑你的标题。 – mkb 2009-05-06 18:32:13