2014-07-03 212 views
2

在我的程序中,我可能會關閉一個已經關閉的文件。當我對已經關閉的文件執行fclose時會發生什麼?關閉已經關閉的文件

如果你不能這樣做,如何知道文件是關閉還是打開?

+0

看起來像一些這些結果回答你的問題。 – crashmstr

+0

不...但感謝您的投票...不能問這個網站上的問題:( –

+0

我看了整個結果,似乎他們回答你的問題,如上所述。[FILE指針後會發生什麼文件已關閉?](http://stackoverflow.com/questions/8441059/what-happens-to-file-pointer-after-file-is-closed),[在前面關閉的文件句柄上的fclose() ](http://stackoverflow.com/questions/12811464/double-free-error-on-fclose-on-previously-closed-file-handle) – crashmstr

回答

11

使用相同的流調用fclose兩次是未定義行爲 - 很可能是崩潰。有沒有辦法來檢查是否FILE*已被關閉,所以安全的解決方案是,只要它是封閉設置指針爲NULL:

fclose(fh); 
fh = NULL; 

來源:「指針到一個文件對象的值關聯文件關閉後不確定「(C草案標準)。 「在調用fclose()之後,任何流的使用都會導致未定義的行爲。」 (Single UNIX®規範)。