Python 3.8+Linux · macOSosфункция
os.posix_spawn
os — запуск программ (spawn)
Эффективно запускает новую программу через системный вызов posix_spawn; возвращает PID (Python 3.8+). Доступно на Unix.
Синтаксис
os.posix_spawn(...)
Быстрее fork плюс exec для больших процессов: не нужно копировать адресное пространство родителя. subprocess использует её сам, когда параметры это позволяют. Аргументы и окружение передаются обязательно: posix_spawn(path, argv, env), где argv начинается с имени программы, а env заменяет окружение целиком (с 3.13 вместо него можно передать None — тогда наследуется текущее). Возвращает PID, которого нужно дождаться через waitpid.
Примеры
import os
pid = os.posix_spawn('/bin/echo', ['echo', 'привет'], os.environ) # → ? только Unix: запускает /bin/echo, печатает «привет» и возвращает PID потомка, например 12345
print(os.waitpid(pid, 0)[1]) # → ? только Unix: 0 — потомок завершился успешно
pid = os.posix_spawn('/bin/sh', ['sh', '-c', 'exit 3'], {'PATH': '/bin:/usr/bin'}) # → ? только Unix: своё окружение вместо os.environ, потомок выйдет с кодом 3
os.posix_spawn('echo', ['echo', 'привет'], os.environ) # → FileNotFoundError: нужен полный путь, PATH не просматривается (для поиска в PATH — os.posix_spawnp)
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности