Tôi hiện đang duy trì một số phần mềm máy chủ web và tôi cần thực hiện rất nhiều hoạt động I/O. Các cuộc gọi read()
, write()
, close()
và shutdown()
, khi được sử dụng trên ổ cắm, đôi khi có thể gây ra lỗi ENOTCONN
. Lỗi này có nghĩa là gì? Các điều kiện nào sẽ kích hoạt nó? Tôi có thể không bao giờ có vẻ để tái sản xuất nó tại địa phương nhưng có những người dùng có thể.Nguyên nhân gây ra lỗi ENOTCONN?
Ngay bây giờ tôi chỉ bỏ qua ENOTCONN
khi được nâng lên bởi close()
và shutdown()
vì nó có vẻ vô hại, nhưng tôi không hoàn toàn chắc chắn.
EDIT:
- Tôi hoàn toàn chắc chắn rằng cuộc gọi
connect()
thành công. Tôi kiểm tra giá trị trả lại của nó. ENOTCONN
thường được nâng lên bởiclose()
vàshutdown()
. Tôi chỉ hiếm khi nhìn thấy một sốread()
vàwrite()
nâng caoENOTCONN
.
Hệ điều hành nào? Tôi đang theo dõi một vấn đề tương tự tại nơi làm việc trên một hệ thống Solaris 10 cũ. Cảm ơn. – Nemo
Chủ yếu là FreeBSD.Trong thời gian đó tôi đã phát hiện ra rằng có các lỗi hạt nhân trong FreeBSD có thể gây ra close() và shutdown() để trả về ENOTCONN sai khi xử lý các socket miền Unix. Solaris cũng có các lỗi hạt nhân khác nhau w.r.t. Các ổ cắm miền Unix, mặc dù tôi chỉ quan sát thấy các lỗi trong kết nối(). – Hongli