Sí. Registre su controlador de señal usando sigaction
con el SA_SIGINFO
bandera, rellenando el sa_sigaction
campo. Ahora su función de controlador toma un siginfo_t*
parámetro, que incluye un campo si_pid
.
Tenga en cuenta que si_pid
sólo se establece en algunas circunstancias. En su caso, querrá verificar que verifique que si_code
está establecido en SI_USER
o SI_QUEUE
. Leer man 2 sigaction
por más.
Sí, si usas el sigaction()
llame para configurar su controlador de señal en lugar de signal
. Si lo hace, le permitirá configurar un controlador de señal que toma tres parámetros:
- Un
int
, para el número de señal (igual quesignal
) - A
siginfo_t *
, que es una estructura que contiene todo tipo de información sobre la fuente de la señal, incluido el pid del remitente, si corresponde. (También incluye información sobre la causa de la señal para señales automáticas comoSIGSEGV
.) - A
ucontext_t *
, que tiene que ver con qué subproceso recibió la señal. Mayormente ignorable.