我目前正在維護一些網絡服務器軟件,我需要執行大量的I/O操作。當在套接字上使用時,調用read()
,write()
,close()
和shutdown()
有時可能會引發ENOTCONN
錯誤。這個錯誤究竟意味着什麼?什麼是會觸發它的條件?我永遠無法在本地重現它,但有用戶可以。什麼導致ENOTCONN錯誤?
現在我只是忽略了ENOTCONN
當提出close()
和shutdown()
因爲它似乎無害,但我不完全確定。
編輯:
- 我絕對肯定的
connect()
調用成功。我檢查它的返回值。 ENOTCONN
最常見的是close()
和shutdown()
。我只是很少見到read()
和write()
籌集ENOTCONN
。
什麼操作系統?我正在跟蹤一箇舊Solaris 10系統上的類似問題。謝謝。 – Nemo 2011-12-13 02:27:56
大部分是FreeBSD。同時,我發現FreeBSD中有內核錯誤,可能會導致close()和shutdown()在處理Unix域套接字時錯誤地返回ENOTCONN。 Solaris也有各種內核錯誤w.r.t. Unix域套接字,儘管我只在connect()中觀察到錯誤。 – Hongli 2011-12-13 08:52:00