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.