Что означает код errno 99 (ENOSTR) в macOS?

 
Также может означать:
КонстантаТипОС
EADDRNOTAVAILerrnoLinux
ENOPROTOOPTerrnoSolaris
SECURITY1_INITIALIZATION_FAILEDКод BSODWindows
Предыдущий Следующий
EADDRNOTAVAIL ENOPROTOOPT

ENOSTR

ENOSTR в Darwin

В Darwin значение 99 (ENOSTR) означает: дескриптор Darwin не является потоком STREAM. Операция или ioctl, предназначенные для STREAMS, были применены к дескриптору, который не представляет поток STREAM.

Что зафиксировать

СведенияНа какой вопрос отвечают
Происхождение дескриптора, тип по fstat, путь открытия, операция и ожидаемый модуль.Связывают ошибку с конкретным действующим объектом API, а не только с переведённым сообщением.
Darwin errno и версия SDK/XNU.Показывают, возникла ли ошибка в ABI вызывающей стороны, оболочке или поставщике.
Результат первого системного вызова или ioctl, а также процесс, поток и экземпляр объекта.Сохраняет errno до его перезаписи.
Контрольный объект той же сборки macOS.Даёт контрольное сравнение на той же платформе.

Контрольная проверка

  1. Откройте предполагаемую конечную точку STREAM и повторите минимальный ioctl. При проверке типа STREAM не меняйте двоичный файл, ABI заголовков и поставщика.
  2. Немедленно сохраните errno и сравните связанное возвращаемое значение. Зафиксируйте, доходит ли проверка дескриптора до той же границы системного вызова или среды выполнения, что и исходная ошибка.
  3. Повторите тест с одним контролируемым объектом, сохранив идентификатор и песочницу без изменений. Изменение errno после теста указывает на новую границу, а не на другую формулировку той же ошибки.

Исправление

Проверяйте тип дескриптора и направляйте обычные файлы и сокеты в предназначенные для них API.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.