| Предыдущий | Следующий |
| EMFILE | ETXTBSY |
ENOTTY
Почему название историческое
ENOTTY исторически относился к операции, требующей терминального устройства. В современных UNIX-подобных системах код обычно возвращается, когда запрос ioctl() неприменим к объекту, на который указывает файловый дескриптор. Сам дескриптор может быть действительным, но вести к обычному файлу, сокету, каналу, пространству имён или драйверу, не реализующему эту команду.
Поэтому это чаще несоответствие контракта API, а не отсутствие физического терминала. Возможность также может не поддерживаться текущим ядром, файловой системой, драйвером или библиотечной обёрткой.
Как расследовать
- Запишите константу запроса ioctl, происхождение дескриптора и тип объекта.
- Убедитесь, что дескриптор относится именно к ожидаемому устройству или файловой системе, а не просто является открытым.
- Проверьте документированную поддержку точной команды в используемой версии ядра, драйвера и файловой системы.
- Предусмотрите проверку возможности или явное состояние «не поддерживается», а не считайте каждый
ENOTTYвременным сбоем.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.