Python Glossary English

Python 3.9+Linuxosфункция

os.pidfd_open

os — спец. дескрипторы

Возвращает дескриптор, ссылающийся на процесс по PID (для надёжной посылки сигналов; Python 3.9+). Доступно на Linux.

Синтаксис

os.pidfd_open(...)

Дескриптор держит конкретный процесс, а не номер, поэтому сигнал через signal.pidfd_send_signal не попадёт в чужой процесс, получивший тот же PID после завершения исходного. Дескриптор можно ждать через select: он становится читаемым, когда процесс завершился.

Примеры

import os, select, signal
fd = os.pidfd_open(os.getpid())   # → ? только Linux: дескриптор, привязанный к текущему процессу, например 3
signal.pidfd_send_signal(fd, 0)   # → None — сигнал 0 лишь проверяет, что процесс жив (реальный SIGTERM шлют так же, но дочернему процессу)
print(select.select([fd], [], [], 0))   # → ([], [], []) — процесс ещё работает; когда завершится, fd станет готов к чтению
os.kill(os.getpid(), 0)   # → ? только Unix: то же самое по PID — но освободившийся PID ОС может отдать другому процессу, а pidfd всегда указывает на тот самый
os.close(fd)   # → ? только Linux: дескриптор закрыт; на сам процесс это никак не влияет

См. также

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