n1ro°
RU

Ошибки · Решение

Linux errno EISDIR: что означает и как исправить

Системный вызов достиг существующего directory как конечного объекта, но выбранная операция недопустима для каталога.

Редакция N1RO · Проверено

Короткий ответ

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

Что означает ошибка

Системный вызов достиг существующего directory как конечного объекта, но выбранная операция недопустима для каталога.

Возможные причины

  • В `open`/запись передан путь к каталогу без имени файла.
  • После сборки output path потерялась финальная часть filename.
  • Код обработки файлов ошибочно получил directory entry вместо файла.

Что проверить

  • Проверьте тип именно конечного pathname через `stat` и сопоставьте его с вызываемым API.
  • Выведите final output/input path непосредственно перед файловой операцией.
  • Проверьте ветку кода, где каталог перечисляется, а затем выбирается конкретный файл.

Безопасные шаги

  1. Сформируйте путь до конкретного файла, если операция должна читать или писать файл.
  2. Для работы с каталогом используйте API перечисления/открытия directory, подходящий вашей задаче.
  3. Добавьте проверку типа конечного объекта перед destructive/write операциями.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если EISDIR воспроизводится при корректном final path, приложите владельцу приложения системный вызов, flags открытия, `stat` конечного объекта и минимальный пример.

Похожие ошибки

  • /errors/linux-errno-esrch/
  • /errors/linux-errno-eintr/
  • /errors/linux-errno-eio/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.