Python Glossary English

все Python 3Linux · macOSosфункция

os.setsid

os — сессии и группы процессов

Создаёт новую сессию, делая процесс её лидером (отвязка от терминала). Доступно на Unix.

Синтаксис

os.setsid(...)

Лидер группы вызвать её не может — будет PermissionError, поэтому сначала делают fork и вызывают setsid в потомке. Новая сессия не имеет управляющего терминала, и закрытие терминала больше не убьёт процесс сигналом SIGHUP. В subprocess то же даёт start_new_session=True.

Примеры

import os
pid = os.fork()                          # → ? только Unix: 0 в дочернем процессе, PID ребёнка — в родительском
if pid == 0: print(os.setsid())          # → None — ребёнок стал лидером новой сессии и отвязался от терминала
print(os.getsid(0) == os.getpid())       # → ? True в ребёнке после setsid: id сессии совпадает с его PID
print(os.getpgrp() == os.getpid())       # → ? True: setsid заодно создаёт новую группу процессов с тем же id
os.setsid()                              # → PermissionError: процесс уже лидер группы, повторный вызов запрещён

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности