Формы вызова функции os. exec

formy vyzova funkcii os exec Системные инструменты параллельного выполнения

Аргументы функции os.execlp определяют программу, которая должна быть выполнена, и аргументы командной строки, которые следует передать ей (доступные в сценариях Python в виде списка sys.argv). В случае успеха начинается выполнение новой программы, и возврата из вызова функции os.execlp не происходит (так как оригинальная программа замещается новой, то возвращаться действительно некуда). Если возврат все-таки происходит, это означает, что произошла ошибка, поэтому в сценарии после вызова функции стоит инструкция assert, при достижении которой всегда возбуждается исключение.

В стандартной библиотеке Python есть несколько разновидностей функции os.exec. Часть из них позволяет настраивать переменные окружения для новой программы, передавать аргументы командной строки в различных форматах и так далее. Все они имеются как в Unix, так и в Windows, и заменяют вызвавшую их программу (то есть интерпретатор Python). Всего существует восемь разновидностей функции exec, что может вызывать затруднения в выборе, если не сделать обобщение:

os.execv(program, commandlinesequence)

Базовая «v»-форма функции exec, которой передается имя выполняемой программы вместе со списком или кортежем строк аргументов командной строки, используемых при запуске программы (то есть слов, которые обычно можно ввести в командной строке для запуска программы).

os.execl(program, cmdargl , cmdarg2, cmdargN)

Базовая «Ь-форма функции exec, которой передается имя выполняемой программы, за которым следуют один или более аргументов командной строки, передаваемых как отдельные аргументы функции. Соответствует вызову функции os.execv(program, (cmdargl, cmdarg2, …)).

os.execlp os.execvp

Символ «р», добавленный к именам execv и execl, означает, что Python станет искать каталог, где находится программа, используя системный путь поиска (то есть переменную PATH).

os.execle os.execve

Символ «e», добавленный к именам execv и execl, означает, что дополнительный последний аргумент является словарем, содержащим переменные окружения, которые нужно передать программе.

os.execvpe os.execlpe

Символы «p» и «e», добавленные к базовым именам exec, означают одновременное использование пути поиска и словаря с переменными окружения.

Поэтому, когда сценарий в примере 5.3 вызывает os.execlp, отдельно передаваемые параметры определяют аргументы командной строки для программы, которую нужно выполнить, а слово python отображается в выполняемый файл, находящийся в пути поиска системы (РАТН). Это соответствует выполнению в оболочке команды вида python child.py 1, но каждый раз с разными аргументами командной строки в конце.

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий