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