Python Glossary English

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Сообщить о неточности