Python Glossary English

Python 3.9+Linuxsignalфункция

signal.pidfd_send_signal()

отправка сигналов

Посылает сигнал процессу по файловому дескриптору pidfd, а не по PID. Только Linux 5.1+.

Синтаксис

signal.pidfd_send_signal(pidfd, sig, siginfo=None, flags=0)

Смысл в защите от переиспользования PID: os.kill по старому номеру может попасть в чужой процесс, а pidfd навсегда привязан к одному процессу — если тот завершился, будет ProcessLookupError. Дескриптор берут через os.pidfd_open(pid) и закрывают os.close. Аргументы siginfo и flags пока не поддерживаются: только None и 0.

Примеры

import os, signal
got = []
old = signal.signal(signal.SIGUSR1, lambda s, f: got.append(s))
fd = os.pidfd_open(os.getpid())  # → ? нужен Linux 5.1+
signal.pidfd_send_signal(fd, signal.SIGUSR1)
os.close(fd)
signal.signal(signal.SIGUSR1, old)
print(got == [signal.SIGUSR1])  # → True

См. также

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

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