Что означает код errno 8 (ENOEXEC)?

 
Также может означать:
КонстантаТипОС
ERROR_NOT_ENOUGH_MEMORYОшибка WindowsWindows
KERN_NO_ACCESSКод возврата ядра macOSmacOS
ippStsLnNegArgСтатус Intel IPPЛюбая
IRQL_NOT_DISPATCH_LEVELКод BSODWindows
Предыдущий Следующий
E2BIG EBADF

ENOEXEC

Что код доказывает и чего не доказывает

ENOEXEC означает, что запуск дошёл до проверки формата, но система не смогла распознать цель как допустимый программный образ. Типичные причины: двоичный файл для другой архитектуры процессора, повреждённый или неполный исполняемый файл, прямой запуск текста без подходящей строки интерпретатора либо неверный заголовок сценария.

Это отличается от ENOENT: цель была найдена. Код также не равен обычному отказу в праве исполнения. Некоторые оболочки и высокоуровневые средства запуска намеренно пытаются передать текст shell, поэтому наблюдаемое поведение может различаться между оболочками, средами выполнения и обёртками, хотя исходный системный вызов вернул ENOEXEC.

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

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

Ссылки


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