| Предыдущий | Следующий |
| EPERM | ESRCH |
ENOENT
Почему «файл не найден» может вводить в заблуждение
ENOENT не доказывает, что неверно написано конечное имя файла. Разрешение пути проходит каждый компонент от начального каталога до последнего имени. Поэтому код может означать отсутствие промежуточного каталога, оборванную символическую ссылку, неожиданный текущий рабочий каталог либо отсутствие требуемого интерпретатора или загрузчика при запуске исполняемого файла.
Относительные пути особенно важны для служб, заданий планировщика, контейнеров и конфигураций запуска IDE. Они разрешаются от рабочего каталога процесса, а не от каталога исполняемого файла. API семейства openat() может вместо этого интерпретировать относительный путь от переданного дескриптора каталога.
Как расследовать
- Запишите точный путь после подстановки переменных и сохраните текущий рабочий каталог либо дескриптор каталога, использованный вызовом.
- Проверьте каждый компонент пути, цели символических ссылок и точки монтирования, а не только конечное имя.
- При ошибке запуска проверьте строку интерпретатора скрипта, динамический загрузчик и библиотечные зависимости исполняемого файла.
- Если файл должен появиться асинхронно, отличите реальную гонку от постоянной ошибки конфигурации до организации повторов.
Ссылки
- Руководство Linux: path_resolution(7)
- Руководство Linux: open(2)
- Руководство Linux: execve(2)
- Руководство FreeBSD: open(2)
Нужно найти другой код? Найти другой код состояния или ошибки.
