亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關閉文件時會出錯嗎?

關閉文件時會出錯嗎?

Go
翻閱古今 2022-01-17 20:09:41
編程時,我經常打開和關閉文件。我了解打開文件時,檢查錯誤以查看它是否確實打開非常重要。我不知道一個實例,但關閉文件時會出現問題(除非打開文件確實出錯并且未選中)。我目前正在 go 中編程,如果需要,該函數可以os在包下返回錯誤。我知道在 C++ 中這也是可能的。.Close()最后,我的問題是嘗試關閉文件時會導致錯誤的情況是什么?
查看完整描述

2 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

是的。關閉文件可能會導致錯誤/失敗。例如,請參閱close(3)可以返回的錯誤 - http://linux.die.net/man/3/close - 文件系統損壞之類的東西是可能的原因之一。

通常,除了記錄錯誤并知道您的數據可能被搞砸(取決于錯誤)之外,您實際上無能為力 - 您很少可以“修復它”,除非您可能會在其他地方重新寫入數據仍然有它等。

您使用的語言(Go、C++ 等)無關緊要。如果文件系統已滿、損壞或有人從物理上撕掉了硬盤驅動器,那么您的編程語言就無法拯救您,并且關閉將失敗,任何人都在猜測您的數據是否安全地存儲在某個地方。


查看完整回答
反對 回復 2022-01-17
?
www說

TA貢獻1775條經驗 獲得超8個贊

在操作系統級別,關閉文件時也可能出現問題,尤其是當您寫入文件時(即緩沖問題、磁盤空間不足、媒體刪除等)。

C++fstream有一個void close()不返回任何內容的函數。原則是一旦你調用了close,無論是否有錯誤,你都不能再使用流。但是,當發生關閉錯誤時,會設置失敗位,以便可以檢測到它,并且可以通過通常的方式檢索錯誤代碼。

Cfclose()返回一個int顯示是否有錯誤。如果您想知道它失敗的原因,您必須獲取并分析errno錯誤代碼。它不像 void 函數那樣不言自明,但在這里,無論是否有錯誤,在結束調用后您都不能再使用 FILE* 了。


查看完整回答
反對 回復 2022-01-17
  • 2 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號