2012-03-09 299 views
8

fopen的手冊頁我無法明確地回答這個問題。fopen是否創建文件描述符?

FILE *fopen(const char *path, const char *mode); 

我明白fopen返回一個文件指針到流,但作爲副產品創建文件描述符?我試圖確保在每個創建文件描述符的實例上包含標記FD_CLOEXEC。如果文件描述符實際上是從fopen創建的,那麼當沒有「fd」用作輸入時,使用fnctl()的最佳方式是什麼。

謝謝。

回答

16

在Unix(我假設你正在使用,因爲你提fcntl)它確實打開一個文件描述符,作爲fopen(3)最終調用open(2).您可以通過fileno(3)獲取文件描述符。