все Python 3Linux · macOSosфункция
os.setpgid
os — сессии и группы процессов
Помещает процесс в указанную группу процессов. Доступно на Unix.
Синтаксис
os.setpgid(...)
Переводит процесс в другую группу, обычно сразу после fork: os.setpgid(0, 0) делает потомка лидером собственной группы. Так оболочки отделяют задания друг от друга. Переносить можно только себя или своих потомков и только в пределах одной сессии. В subprocess то же даёт параметр process_group.
Примеры
import os
os.setpgid(0, 0) # → ? только Unix: pid=0 и pgid=0 означают «текущий процесс, своя новая группа»
print(os.getpgrp() == os.getpid()) # → ? только Unix: True — процесс стал лидером собственной группы
child = os.fork() # → ? только Unix: 0 в дочернем процессе, PID потомка в родительском
os.setpgid(child, child) # → ? только Unix: идиома job control — вызывают оба процесса (в потомке child == 0, «сам себе группа»), это снимает гонку с exec
os.setpgid(os.getppid(), 0) # → ? только Unix: ProcessLookupError — менять группу можно себе и своим потомкам, но не родителю
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности