Первый параметр os.exec *

Из документов python:

Различные функции exec * () принимают список аргументов для новой программы, загруженной в процесс. В каждом случае первый из этих аргументов передается новой программе как свое собственное имя, а не как аргумент, который пользователь может ввести в командной строке. Для программиста C это argv [0] передается в main () программы. Например, os.execv ('/ bin / echo', ['foo', 'bar']) будет только печатать на стандартном выходе; foo, похоже, будет проигнорирован.

Может кто-то, пожалуйста, помогите мне понять это? Что мне нужно сделать, если я хочу запустить свою собственную программу с некоторыми параметрами?

One Solution collect form web for “Первый параметр os.exec *”

UNIX, откуда происходят все эти события exec , отделяет исполняемый файл программы от имени программы, так что ваш процесс может иметь любое произвольное имя.

Первый аргумент – это программа, которая будет работать. Это должно существовать. Следующий аргумент – это вызов вашего процесса, запускающего программу , что будет в argv[0] , и то, что появляется в выводе ps (список процессов).

Итак, если бы я сделал (в C, но он также отображается на Python):

 execl ("/usr/bin/sleep", "notsleep", "60", NULL); 

Это приведет к запуску программы /usr/bin/sleep но она будет отображаться в списке процессов как notsleep . argv[0] не будет notsleep а argv[1] (фактический аргумент) будет 60. Часто первые два параметра будут идентичными, но это отнюдь не требуется.

Вот почему первый аргумент вашего списка (по-видимому) игнорируется. Это имя, которое нужно передать процессу, а не первый аргумент.

Более правильный способ сделать это:

 os.execv('/bin/echo', ['echo', 'foo', 'bar']) 
  • Использование exec и eval в Python
  • Ошибка синтаксиса, выполняющая код python из базы данных
  • Получение PHP для запуска скрипта Python
  • Поток PyQt по-прежнему работает после закрытия окна
  • Python: как передать аргументы функции __code__ функции?
  • Почему закрытие закрывается внутри exec?
  • Выполнить блок кода python с помощью exec, захватив весь его вывод?
  • Как вернуть значение из функции exec?
  • Python - лучший язык программирования в мире.