Сообщить об ошибке.

Функции spawn*() модуля os в Python

Выполнить программу в новом процессе

Синтаксис:

import os

os.spawnl(mode, path, ...)
os.spawnle(mode, path, ..., env)
os.spawnlp(mode, file, ...)
os.spawnlpe(mode, file, ..., env)
os.spawnv(mode, path, args)
os.spawnve(mode, path, args, env)
os.spawnvp(mode, file, args)
os.spawnvpe(mode, file, args, env)

Параметры:

  • mode - режим запуска,
  • path - str, путь в файловой системе запускаемой программы,
  • file - str, файла запускаемой программы,
  • args - список аргументов командной строки запускаемой программы,
  • env - dict - переменная среда для выполнения программы.

Возвращаемое значение:

  • int, идентификатор процесса нового процесса

Описание:

Функции os.spawn*() запускают программу, расположенную по указанному пути в файловой системе в новом процессе.

*Обратите внимание, что модуль subprocess предоставляет более мощные средства для порождения новых процессов и получения их результатов. Использование этого модуля предпочтительнее, чем использование этих функций.

Если режим mode=P_NOWAIT, эта функция возвращает идентификатор процесса нового процесса. Если mode - P_WAIT, возвращает код завершения процесса, если он завершается нормально или - signal, где signal - это сигнал, который убил процесс. В Windows идентификатор процесса фактически будет дескриптором процесса, поэтому может использоваться с функцией os.waitpid().

Обратите внимание на VxWorks, эта функция не возвращает signal, когда новый процесс завершается. Вместо этого возникает исключение OSError.

Варианты 'l' и 'v' функций os.spawn*() отличаются тем, как передаются аргументы командной строки. С вариантами 'l' работать легче всего, если число параметров фиксировано при написании кода, отдельные параметры просто становятся дополнительными параметрами для функций os.spawnl*(). Варианты 'v' хороши, когда число параметров является переменным, а аргументы передаются в списке или кортеже в качестве параметра args. В любом случае аргументы дочернего процесса должны начинаться с имени запускаемой команды.

Варианты, которые включают 'p' в конце (os.spawnlp(), os.spawnlpe(), os.spawnvp() и os.spawnvpe()), будут использовать переменную среды PATH для определения местоположения файла file программы. Когда среда выполнения заменяется с использованием одного из вариантов os.spawn*e(), описанного в следующем параграфе, новая среда выполнения env используется в качестве источника переменной PATH. Другие варианты, os.spawnl(), os.spawnle(), os.spawnv() и os.spawnve(), не будут использовать переменную PATH для поиска исполняемого файла. Путь должен содержать соответствующий абсолютный или относительный путь.

Для os.spawnle(), os.spawnlpe(), os.spawnve() и os.spawnvpe(), обратите внимание, что все они заканчиваются на 'e', параметр env должен быть словарем, который используется для определения переменной среды для нового процесса, т. е. env будет использоваться вместо среды текущего процесса. Функции os.spawnl(), os.spawnlp(), os.spawnv() и os.spawnvp() заставляют новый процесс наследовать среду текущего процесса. Обратите внимание, что ключи и значения в словаре env должны быть строками. Неверные ключи или значения приведут к сбою функции с возвращаемым значением 127.

Например, следующие вызовы os.spawnlp() и os.spawnvpe() эквивалентны:

import os
os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')

L = ['cp', 'index.html', '/dev/null']
os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)

Вызывает событие аудита os.spawn с аргументами mode, path, args, env.

Доступность: Unix, Windows.


Поддерживаемые режимы запуска:

os.P_NOWAIT,
os.P_NOWAITO
:

Возможные значения параметра mode для семейства функций os.spawn*(). Если задано любое из этих значений, функции os.spawn*() вернутся, как только будет создан новый процесс, с идентификатором процесса в качестве возвращаемого значения.

Доступность: Unix, Windows.

os.P_WAIT:

Возможные значения параметра mode для семейства функций os.spawn*(). Если это задано как mode, функции os.spawn*() не будут возвращать значения до тех пор, пока новый процесс не завершится и вернет код завершения процесса, который был выполнен успешно, или signal, если сигнал убил процесс.

Доступность: Unix, Windows.

os.P_DETACH,
os.P_OVERLAY
:

Возможные значения параметра mode для семейства функций os.spawn*(). Они менее портативны, чем перечисленные выше. P_DETACH похож на P_NOWAIT, но новый процесс отсоединяется от консоли вызывающего процесса. Если используется P_OVERLAY, текущий процесс будет заменен. Функция os.spawn*() ничего не вернет.

Доступность: Windows.