Python 3.3+Linuxsignalфункция
signal.sigwaitinfo()
маски и ожидание
Как sigwait, но возвращает подробности сигнала (struct_siginfo): номер, PID и UID отправителя. Linux; на macOS функции нет.
Синтаксис
info = signal.sigwaitinfo(sigset)
Документация пишет «Unix», но на macOS этой функции нет — hasattr(signal, 'sigwaitinfo') там ложно. Ценность — поле si_pid: видно, какой процесс прислал SIGTERM. Как и у sigwait, сигналы нужно заранее заблокировать, а ожидание бессрочное; с пределом — sigtimedwait.
Примеры
import os, signal
old = signal.pthread_sigmask(signal.SIG_BLOCK, {signal.SIGUSR1})
os.kill(os.getpid(), signal.SIGUSR1)
info = signal.sigwaitinfo({signal.SIGUSR1})
print(info.si_signo == signal.SIGUSR1, info.si_pid == os.getpid()) # → True True
signal.pthread_sigmask(signal.SIG_SETMASK, old)
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности