Linux下FILE結構與“File descriptor”的區別

在學習linux,在linux下使用c語言練習系統調用的時候,經常會遇到與文件相關的操作。一般來講打開一個文件我們會得到這個文件對於的文件描述符fd“file descriptor”;另外在另一些系統調用裏我們又常常遇到FILE這個結構。不知道最初是爲什麼,反正我一直認爲這兩者是完全一樣的東西,FILE只不過是typedef後的int而已。直到有一天上機時遇到了奇怪的問題,才被迫在man中詳細讀了file descriptor相關的東西,才發現這兩者不是一回事,而且兩者混用的情況是不推薦的,很容易帶來意想不到的問題。


另外通過搜索,我找到了兩個相關的函數:

fdopen():可以返回fd對應得(FILE *)結構而
fileno() 則恰恰相反,可以返回FILE*結構對應得 file descriptor。


希望這些信息能對大家有用~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章