原因:句柄被用完了
出現這種情況有會是以下幾種情況導緻的:
1:檔案句柄未關閉 包括普通檔案、socket描述符、資料庫連接配接等
2:所有句柄雖然釋放了,但是沒有人工釋放,在垃圾回收中積累着,在某一時刻爆發出錯。
3:在fclose(fp)之前,作業系統并未将緩沖區中的檔案内容寫入磁盤,導緻寫多次後打開的檔案就多了
解決辦法:
1:通過ulimit 來修改 file opens選項的值(隻使用目前會話)
2:echo "8192" > /proc/sys/fs/fs-max 重新開機電腦(不一定管用)
3:最好的辦法就是檢查源碼,修改錯誤。
另外:如果fclose(fp),其中fp并未指向任何檔案,這樣會導緻程式崩潰或出現記憶體錯誤。