Python Glossary English

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