給定一個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