| Предыдущий | Следующий |
| ENOLCK | EREMCHG |
EBADMSG
EBADMSG — значение errno Solaris 77. В документации Solaris это конкретное несоответствие в головной части очереди STREAMS, а не общее утверждение о повреждении произвольных данных приложения. Неожиданный элемент зависит от вызова, сообщившего ошибку.
Ошибочная операция STREAMS определяет характер несоответствия
Для read()головная часть потока может содержать управляющую информацию или переданный файловый дескриптор, когда запрашивались обычные данные. Для getmsg()несовместимым элементом является переданный файловый дескриптор. Для ioctl(I_RECVFD)управляющая информация или данные могут помешать приёму дескриптора. Эти случаи описывают тип сообщения и порядок очереди.
Зафиксируйте дескриптор, точный вызов и модули STREAMS, помещённые в поток. Модуль, вставляющий управляющие сообщения или трафик передачи дескрипторов, может изменить то, что достигает головной части потока. Не сводите EBADMSG к EIO и не отбрасывайте вслепую первое сообщение очереди: неожиданное сообщение может содержать управляющую информацию протокола, которую приложение должно получить через правильный интерфейс STREAMS.
Ссылки
- Oracle Solaris intro(2): случаи EBADMSG для конкретных вызовов
- Руководство Oracle Solaris по программированию STREAMS
- illumos errno.h
Нужно найти другой код? Найти другой код состояния или ошибки.