| Предыдущий | Следующий |
| ENOTDIR | EINVAL |
EISDIR
Какое несоответствие типа произошло
EISDIR сообщает, что целевой объект существует и является каталогом, тогда как операция ожидает другой тип. Чтение через дескриптор каталога может вернуть этот код. То же возможно при попытке открыть каталог для изменения как обычный файл. Операции переименования и удаления также различают каталоги и некаталоги, поскольку для них действуют разные API и правила безопасности.
Код полезен именно тем, что это не ENOENT и не ENOTDIR: путь успешно разрешён, а неожиданным оказался тип конечного объекта.
Как расследовать
- Проверьте тип конечного объекта и убедитесь, что путь случайно не указывает на каталог, корень монтирования или каталог пакета.
- Для перечисления, создания и удаления каталогов используйте предназначенные для них API, а не операции чтения и записи обычных файлов.
- Проверьте объединение компонентов пути и переменные имени файла: пустой последний компонент часто сводит путь к самому каталогу.
- В разрушительном коде воспринимайте несоответствие типа как защиту, а не пытайтесь принудительно применить файловую операцию к каталогу.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.