Что означает код errno 21 (EISDIR)?

 
Также может означать:
КонстантаТипОС
ERROR_NOT_READYОшибка WindowsWindows
KERN_RIGHT_EXISTSКод возврата ядра macOSmacOS
ippStsCpuMismatchСтатус Intel IPPЛюбая
LAST_CHANCE_CALLED_FROM_KMODEКод BSODWindows
Предыдущий Следующий
ENOTDIR EINVAL

EISDIR

Какое несоответствие типа произошло

EISDIR сообщает, что целевой объект существует и является каталогом, тогда как операция ожидает другой тип. Чтение через дескриптор каталога может вернуть этот код. То же возможно при попытке открыть каталог для изменения как обычный файл. Операции переименования и удаления также различают каталоги и некаталоги, поскольку для них действуют разные API и правила безопасности.

Код полезен именно тем, что это не ENOENT и не ENOTDIR: путь успешно разрешён, а неожиданным оказался тип конечного объекта.

Как расследовать

  • Проверьте тип конечного объекта и убедитесь, что путь случайно не указывает на каталог, корень монтирования или каталог пакета.
  • Для перечисления, создания и удаления каталогов используйте предназначенные для них API, а не операции чтения и записи обычных файлов.
  • Проверьте объединение компонентов пути и переменные имени файла: пустой последний компонент часто сводит путь к самому каталогу.
  • В разрушительном коде воспринимайте несоответствие типа как защиту, а не пытайтесь принудительно применить файловую операцию к каталогу.

Ссылки


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