Python 3.3+Linuxsignalпонятие
signal.struct_siginfo
маски и ожидание
Тип результата sigwaitinfo и sigtimedwait: именованный кортеж с полями si_signo, si_code, si_pid, si_uid и др. Linux.
Синтаксис
info.si_signo, info.si_pid, info.si_uid
Создавать его самому незачем — он только приходит из sigwaitinfo/sigtimedwait. Это структурная последовательность: поля доступны и по имени, и по индексу, а распаковка даёт все семь значений. Поля si_status и si_band осмысленны лишь для отдельных сигналов (SIGCHLD, SIGPOLL), в остальных случаях там мусор или ноль. Номер в si_signo — простое int, имя даст signal.Signals(info.si_signo).
Примеры
import os, signal
old = signal.pthread_sigmask(signal.SIG_BLOCK, {signal.SIGUSR1})
signal.raise_signal(signal.SIGUSR1)
info = signal.sigwaitinfo({signal.SIGUSR1})
print(type(info).__name__, len(info)) # → struct_siginfo 7
print(signal.Signals(info.si_signo).name, info[0] == info.si_signo) # → SIGUSR1 True
print(info.si_pid) # → ? PID этого процесса
signal.pthread_sigmask(signal.SIG_SETMASK, old)
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности