| Предыдущий | Следующий |
| EPFNOSUPPORT | EDESTADDRREQ |
ENODATA
ENODATA в Darwin
В Darwin значение 96 (ENODATA) означает: в потоке STREAM Darwin нет доступного сообщения. Операция чтения или управления, совместимая со STREAMS, не обнаружила сообщения или данных в требуемом контексте потока.
Почему важна платформа
Декодируйте ENODATA по заголовкам SDK/XNU той версии macOS, где получен результат. Darwin errno не декодируйте по Linux.
Что зафиксировать
| Сведения | На какой вопрос отвечают |
|---|---|
| Тип файлового дескриптора, подключённые модули, полоса сообщения, операция, флаги и состояние производителя. | Связывают отсутствие сообщения в потоке STREAM Darwin с конкретным действующим объектом API, а не только с переведённым сообщением. |
| Darwin errno и версия SDK/XNU. | Показывают, возникло ли это состояние в ABI вызывающей стороны, оболочке или поставщике. |
| Результат первого системного вызова или ioctl, а также процесс, поток и поколение объекта. | Сохраняет errno до его перезаписи. |
| Контрольный объект той же сборки macOS. | Даёт контрольное сравнение на той же платформе. |
Сохраните errno и возвращаемое значение функции сразу после отказавшего системного вызова или ioctl, до форматирования сообщения, логирования и очистки, которые могут изменить errno.
Контрольная проверка
- Отправьте одно известное сообщение через контролируемую конечную точку потока. После контрольной операции повторите исходный вызов, чтобы результат оставался относящимся к отсутствию сообщения в потоке STREAM Darwin.
- Немедленно сохраните errno и сравните связанное возвращаемое значение. При проверке отсутствия данных STREAMS не меняйте двоичный файл, ABI заголовков и поставщика.
- Повторите тест с одним контролируемым объектом, сохранив идентификатор и песочницу без изменений. Зафиксируйте, достигает ли проверка отсутствия данных STREAMS той же границы системного вызова или среды выполнения, что и исходная ошибка.
Исправление
Восстановите состояние производителя или модуля либо перейдите на поддерживаемый API сокетов или IPC; явно обрабатывайте пустое состояние.
Технические ссылки
- Apple XNU: errno. h — определяет пространство статусов, используемое.
- Apple: ошибки системных вызовов intro(2) — описывает границу API или жизненного цикла, связанную с этим состоянием.
- Apple OSS: исходный код XNU — предоставляет контекст ABI, реализации или протокола.
- The Open Group: errno. h — определяет ограничения переносимости и проверки для этого состояния.
Нужно найти другой код? Найти другой код состояния или ошибки.
