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