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.