import os os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)
path
- путь к исполняемому файлуargv
- аргументы CLI исполняемого файлаenv
- среда исполненияfile_actions=None
- описывает действия, которые необходимо выполнить с определенными файловыми дескрипторами в дочернем процессе между шагами реализации библиотеки C fork()
и exec()
setpgroup=None
- установит для дочерней группы процессов указанное значениеresetids=False
- если True
, то сбросит эффективные UID
и GID
дочернего процесса на реальные UID
и GID
родительского процессаsetsid=False
- если True
, то создаст новый идентификатор сеанса для posix_spawn
setsigmask=()
- будет установлен указанный набор сигналовsetsigdef=()
- изменит расположение всех сигналовscheduler=None
- политику планировщикаДобавлено в Python 3.8.
Функция os.posix_spawn()
модуля os
оборачивает API библиотеки C posix_spawn()
для использования из Python.
Большинству пользователей следует использовать os.subprocess.run()
вместо os.posix_spawn()
.
Аргументы, содержащие только позиционные значения, path
, args
и env
аналогичны os.execve()
. Допускается использование env=None
, и в этом случае используется среда текущего процесса.
Аргумент path
- это путь к исполняемому файлу. Путь должен содержать каталог. для передачи исполняемого файла без каталога необходимо использовать os.posix_spawnp()
.
Аргумент file_actions
может представлять собой последовательность кортежей, описывающих действия, которые необходимо выполнить с определенными файловыми дескрипторами в дочернем процессе между шагами реализации библиотеки C fork()
и exec()
. Первый элемент в каждом кортеже должен быть одним из трех индикаторов типа, перечисленных ниже и описывающих остальные элементы кортежа:
os.POSIX_SPAWN_OPEN
выполняет os.dup2(os.open(path, flags, mode), fd)
(os.POSIX_SPAWN_OPEN, fd, path, flags, mode)
os.POSIX_SPAWN_CLOSE
выполняет os.close(fd)
.
(os.POSIX_SPAWN_CLOSE, fd)
os.POSIX_SPAWN_DUP2
выполняет os.dup2(fd, new_fd)
.
(os.POSIX_SPAWN_DUP2, fd, new_fd)
os.POSIX_SPAWN_CLOSEFROM
выполняет os.closerange(fd, INF).
(os.POSIX_SPAWN_CLOSEFROM, fd)
Эти кортежи соответствуют вызовам API библиотеке C posix_spawn_file_actions_addopen()
, posix_spawn_file_actions_addclose()
, posix_spawn_file_actions_adddup2()
и posix_spawn_file_actions_addclosefrom_np()
, используемым для подготовки к самому вызову posix_spawn()
.
Аргумент setpgroup
установит для дочерней группы процессов указанное значение. Если указанное значение равно 0, то идентификатор группы дочерних процессов будет таким же, как и идентификатор его процесса. Если значение setpgroup
не задано, то дочерний процесс унаследует идентификатор родительской группы процессов. Этот аргумент соответствует флагу библиотеки C POSIX_SPAWN_SETPGROUP
.
Если в аргументе resetids
указано True
, то это приведет к сбросу эффективных UID
и GID
дочернего процесса на реальные UID
и GID
родительского процесса. Если аргумент равен False
, то дочерний элемент сохраняет действующие UID и GID родительского элемента. В любом случае, если биты разрешений set-user-ID
и set-group-ID
включены для исполняемого файла, их действие переопределит настройку действующих UID
и GID
. Этот аргумент соответствует флагу библиотеки C POSIX_SPAWN_RESETIDS
.
Если аргумент setsid
равен True
, то это создаст новый идентификатор сеанса для posix_spawn
. setsid
требует флаг POSIX_SPAWN_SETSID
или POSIX_SPAWN_SETSID_NP
. В противном случае возникает исключение NotImplementedError
.
В аргументе setsigmask
для маски сигнала будет установлен указанный набор сигналов. Если параметр не используется, то дочерний элемент наследует маску сигнала родительского элемента. Этот аргумент соответствует флагу библиотеки C POSIX_SPAWN_SETSIGMASK
.
Аргумент setsigdef
изменит расположение всех сигналов в указанном наборе. Этот аргумент соответствует флагу библиотеки C POSIX_SPAWN_SETSIGDEF
.
Аргумент scheduler
должен быть кортежем, содержащим (необязательно) политику планировщика и экземпляр sched_param
с параметрами планировщика. Значение None
вместо политики планировщика указывает на то, что она не предоставляется. Этот аргумент представляет собой комбинацию флагов библиотеки C POSIX_SPAWN_SETSCHEDPARAM
и POSIX_SPAWN_SETSCHEDULER
.
Вызывает событие аудита os.posix_spawn
с аргументами path
, argv
, env
.
Изменено в Python 3.13: Аргумент
env
может приниматьNone
.os.POSIX_SPAWN_CLOSEFROM
доступно на платформах, гдеposix_spawn_file_actions_addclosefrom_np()
существует.