Почему я получаю ошибку "execv (file, args)" при использовании execl ()? - PullRequest
2 голосов
/ 12 апреля 2020

Я пытаюсь использовать execl () для запуска новой программы, но она продолжает возвращать ошибку execv (), сообщающую, что arg2 не должен быть пустым.

if pid == 0:
    print("This is a child process")
    print("Using exec to another program")
    os.execl("example_prg_02.py")

Почему это происходит при использовании execl ()? Execl () тоже требует аргументы?

1 Ответ

1 голос
/ 12 апреля 2020

"example_prg_02.py" не является путем к исполняемому файлу, вы должны указать

  • путь к исполняемому файлу в качестве 1-го параметра,
  • имя исполняемого файла в качестве 2-го один,
  • параметр (ы) как 3-й (4-й, 5-й, ...)

Так что вместо

os.execl("example_prg_02.py")

используйте

os.execl(sys.executable, "python", "example_prg_02.py")

(конечно, сначала import sys).

sys.executable - это абсолютный путь исполняемого двоичного файла для интерпретатора Python.

...