Первый параметр 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']) 
  • Использование os.execvp в Python
  • Почему закрытие закрывается внутри exec?
  • как запускать скрипты python с помощью команды tcl exec
  • Решение для отправки аргументов в процесс Python с использованием Runtime.exec
  • python: получить вывод печати в инструкции exec
  • Python eval не работает внутри функции
  • Как разобрать строку, представляющую вложенный список, в фактический список?
  • Невозможно изменить глобальные переменные в функции с помощью инструкции exec ()?
  • Как выполнить строку, содержащую код Python в Python?
  • os.exec в Windows
  • Ошибка синтаксиса, выполняющая код python из базы данных
  • Python - лучший язык программирования в мире.