天天看點

linux fopen函數 too many open files錯誤

原因:句柄被用完了

出現這種情況有會是以下幾種情況導緻的:

  1:檔案句柄未關閉  包括普通檔案、socket描述符、資料庫連接配接等

  2:所有句柄雖然釋放了,但是沒有人工釋放,在垃圾回收中積累着,在某一時刻爆發出錯。

  3:在fclose(fp)之前,作業系統并未将緩沖區中的檔案内容寫入磁盤,導緻寫多次後打開的檔案就多了

解決辦法:

  1:通過ulimit 來修改 file opens選項的值(隻使用目前會話)

  2:echo "8192" > /proc/sys/fs/fs-max  重新開機電腦(不一定管用)

  3:最好的辦法就是檢查源碼,修改錯誤。

另外:如果fclose(fp),其中fp并未指向任何檔案,這樣會導緻程式崩潰或出現記憶體錯誤。