我有一個FILE *
,通過向fopen()
的調用返回。我需要從中獲取文件描述符,以便在其上撥打電話fsync(fd)
。從文件指針獲取文件描述符有什麼功能?如何將文件指針(FILE * fp)轉換爲文件描述符(int fd)?
回答
的正確功能是int fileno(FILE *stream)
。它可以在<stdio.h>
可以找到,並且是POSIX標準,但也不是標準C.
嚴格來說,不會有任何需要提及任何標題或庫如果函數的標準確實是一個部分C庫。然而,這不是標準的,這就是爲什麼至少提到標題是有意義的。在標準C庫 – AnT 2010-07-02 23:55:06
訪問功能確實需要包括標題,至少如果你的編譯器期望原型(我從來不記得什麼是真正的標準行爲在這方面)。如果沒有標題,則不會在C文件的開頭定義名稱。 – Novelocrat 2010-07-03 00:20:16
@Novelocrat:我不是說沒有必要包含任何東西。我只是表示,爲*標準*函數找到適當的頭文件名總是很容易的。即在答案中提及確切的標題名稱並不重要。 – AnT 2010-07-03 01:51:43
即使fileno(FILE *)
可能會返回一個文件描述符,要非常小心,不要繞過標準輸入輸出的緩衝區。如果存在緩衝區數據(讀取或未刷新寫入),則從文件描述符讀取/寫入可能會給您帶來意想不到的結果。
要回答的問題一邊一個,一個文件描述符轉換爲一個文件指針,使用fdopen(3)
我不認爲這對專門尋找這個問題的人有幫助,而且這已經在OP撰寫之前一個月的OP的評論部分得到了回答。這更多的是與真實信息相對立的邏輯澄清。 – kevr 2018-02-01 15:03:42
- 1. 將char指針指向內存文件並帶有文件描述符
- 2. fileno轉換FILE描述符C
- 3. 管理指向套接字文件描述符的指針
- 4. 爲什麼我們需要文件描述符和文件指針
- 5. 套接字的描述符可以轉換爲文件指針嗎?
- 6. 從文件描述符獲取文件指針
- 7. 帶文件描述符而不是文件指針的getline()
- 8. 文件描述符和文件指針有什麼區別?
- 9. 如何更改與stdin文件描述符關聯的fd?
- 10. 文件描述符,文件指針和文件位置指示符之間的關係
- 11. 壞文件描述符文件無
- 12. 如何將鏈接描述轉換爲有效文件名
- 13. 將int轉換爲指針
- 14. 關閉文件描述符
- 15. 文件描述符輪詢
- 16. 如何從文件描述符中獲取FILE *流?
- 17. 如何將shared_ptr <FILE>轉換爲C++中的FILE *文件?
- 18. 文件描述符飢餓和阻斷文件描述符
- 19. SOCKET文件描述
- 20. 保留文件描述符,以防止FD耗盡
- 21. 確定文件結構(描述文件描述符)是否爲'特殊文件'(即塊/字符設備)
- 22. 如何從文件描述符獲取文件名和路徑?
- 23. 如何通過int描述符找出文件名? (或「?可我..」)
- 24. 解決文件描述符文件名/文件路徑
- 25. 如何在Python中將本地換行符寫入文件描述符?
- 26. 關閉文件指針而不關閉底層文件描述符
- 27. 選擇在普通文本文件的文件描述符
- 28. 文件描述符返回錯誤值
- 29. 使用文件描述符過程
- 30. 轉換字符數組爲int指針
自答案在這個「危險」的形式鼓勵。 – dmckee 2010-07-02 23:18:32
或者你可以打開與開放(2),你將有一個文件描述符從開始 – 2013-06-29 16:13:34
和逆文件:如何從一個文件描述符文件指針?](http://stackoverflow.com/問題/ 1941464 /如何到獲得-A-文件指針從-A-文件描述符) – 2013-10-01 20:35:54