| Предыдущий | Следующий |
| EWOULDBLOCK | ETOOMANYREFS |
ESHUTDOWN
ESHUTDOWN — значение errno Solaris 143. Oracle определяет его для запроса на отправку данных после того, как конечная точка транспорта уже была закрыта. Ошибка описывает локальное состояние конечной точки: приложение пытается передать данные после того, как жизненный цикл его собственного сокета запретил дальнейшую отправку.
Проследите порядок shutdown и отправки
Solaris документирует режимы shutdown(), запрещающие дальнейший приём, передачу или оба направления. Если один поток закрывает передачу или полностью завершает работу сокета, пока другой поток ещё владеет поставленными в очередь записями приложения, последующая отправка может вернуть ESHUTDOWN. Запишите режим shutdown, идентификатор сокета, порядок потоков и каждую попытку отправки после него.
Не считайте это errno доказательством того, что другая сторона сбросила соединение. Удалённый сброс может проявиться другими транспортными ошибками; ESHUTDOWN конкретно означает, что локальная конечная точка уже перешла в состояние завершения, запрещающее отправку. Исправление обычно требуется в координации владения соединением и его жизненного цикла либо в создании нового соединения, когда протокол явно это допускает, а не в повторах через уже закрытую конечную точку.
Ссылки
- Oracle Solaris intro(2): ESHUTDOWN
- Oracle Solaris: руководство по программным интерфейсам — shutdown сокета
- illumos errno.h
Нужно найти другой код? Найти другой код состояния или ошибки.
