2
在C或C++程序中,我可以使用freopen將輸出(即stdout文件描述符)重定向到另一個文件(或放棄將文件描述符重新打開到/ dev/null或另一個接收器)。應該「freopen'ed」標準輸出關閉?
問題是:如果我這樣做,我應該在程序結束執行之前明確地關閉文件描述符嗎?爲什麼?在哪些平臺上?一般情況下,如果我不關閉文件描述符,在這種特定情況下會發生什麼?
在C或C++程序中,我可以使用freopen將輸出(即stdout文件描述符)重定向到另一個文件(或放棄將文件描述符重新打開到/ dev/null或另一個接收器)。應該「freopen'ed」標準輸出關閉?
問題是:如果我這樣做,我應該在程序結束執行之前明確地關閉文件描述符嗎?爲什麼?在哪些平臺上?一般情況下,如果我不關閉文件描述符,在這種特定情況下會發生什麼?
我應該在程序結束執行之前明確地關閉文件描述符嗎?
的
freopen()
功能打開,其名稱是指向的字符串 由名和關聯流指向流與它的文件。原始流(如果存在)已關閉。
所以不,你不必關閉原來的FILE *
。不過,您可能應該關閉從freopen
調用中返回的那個。順便說一句 - 這些都是FILE *
變量,而不是文件描述符。
爲什麼?
因爲文檔說你不必這樣做。
在哪個平臺上?
任何正確執行freopen(3)
所定義的C標準。
如果我不關閉文件描述符,通常會發生什麼情況?
當程序退出時,操作系統清理程序使用的資源。