all Python 3Linux · macOSosfunction
os.killpg
os — signals and priority
Send a signal to a whole process group. Availability: Unix.
Syntax
os.killpg(...)
It sends a signal to every process in a group — the way to stop a program together with all its children. For this to work, launch the child in its own group or session: subprocess.Popen(..., process_group=0) or start_new_session=True, then os.killpg(proc.pid, signal.SIGTERM).
Examples
import os
import signal
pgid = os.getpgid(0) # → ? только Unix: id группы текущего процесса, например 12345
os.killpg(pgid, 0) # → ? только Unix: сигнал не посылается, проверяется лишь существование группы
import os
import signal
import subprocess; proc = subprocess.Popen(['sleep', '60'], start_new_session=True) # → ? потомок запущен в собственной группе процессов
os.killpg(os.getpgid(proc.pid), signal.SIGTERM) # → ? только Unix: завершает всю группу потомка целиком (os.kill снял бы лишь один процесс)
os.killpg(999999, signal.SIGTERM) # → ProcessLookupError: группы процессов с таким id нет
See also
Common errors
Open in the full glossarydocs.python.orgReport an inaccuracy