Python 3.8+Linux · macOSosfunction
os.posix_spawnp
os — running programs (spawn)
Like posix_spawn, but the program is looked up in PATH. Availability: Unix.
Syntax
os.posix_spawnp(...)
It differs from posix_spawn by searching PATH for the program — the same way execvp does in C, i.e. using the calling process's PATH rather than the env you pass. That sets it apart from os.execvpe, which searches the new environment's PATH. For predictability pass a full path from shutil.which.
Examples
import os
pid = os.posix_spawnp('echo', ['echo', 'привет'], os.environ) # → ? только Unix: находит echo в PATH, возвращает PID потомка, например 12345
print(os.waitpid(pid, 0)[1]) # → ? только Unix: 0 — потомок напечатал «привет» и завершился успешно
pid = os.posix_spawnp('sh', ['sh', '-c', 'exit 3'], {'PATH': '/bin:/usr/bin'}) # → ? только Unix: программу ищут по PATH вызывающего процесса, а не по env — env получит только потомок; он выйдет с кодом 3
os.posix_spawnp('нет-такой-программы', ['нет-такой-программы'], os.environ) # → FileNotFoundError: в PATH ничего не найдено
See also
Common errors
Open in the full glossarydocs.python.orgReport an inaccuracy