GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo encontrar la fuente de una señal POSIX

La página man para sigaction(2) sugiere que el PID del remitente de la señal está disponible en la estructura siginfo_t pasada a su controlador de señal. Esto obviamente requiere que uses sigaction().

Desde la página del manual:

La estructura sigaction se define como algo como:

   struct sigaction {
       void     (*sa_handler)(int);
       void     (*sa_sigaction)(int, siginfo_t *, void *);
       sigset_t   sa_mask;
       int        sa_flags;
       void     (*sa_restorer)(void);
   };

Y el siginfo_t la estructura se ve así:

   siginfo_t {
       int      si_signo;    /* Signal number */
       int      si_errno;    /* An errno value */
       int      si_code;     /* Signal code */
       int      si_trapno;   /* Trap number that caused
                                hardware-generated signal
                                (unused on most architectures) */
       pid_t    si_pid;      /* Sending process ID */
       uid_t    si_uid;      /* Real user ID of sending process */
       int      si_status;   /* Exit value or signal */
       clock_t  si_utime;    /* User time consumed */
       clock_t  si_stime;    /* System time consumed */
       sigval_t si_value;    /* Signal value */
       int      si_int;      /* POSIX.1b signal */
       void    *si_ptr;      /* POSIX.1b signal */
       int      si_overrun;  /* Timer overrun count; POSIX.1b timers */
       int      si_timerid;  /* Timer ID; POSIX.1b timers */
       void    *si_addr;     /* Memory location which caused fault */
       int      si_band;     /* Band event */
       int      si_fd;       /* File descriptor */
   }

Linux
  1. Linux:¿cómo averiguar qué discos duros hay en el sistema?

  2. ¿Cómo saber dónde está la papelera de Firefox?

  3. ¿Cómo averiguar cuál es el dominio para conectarse con Samba?

  4. ¿Cómo saber si la tarjeta admite el modo de infraestructura?

  5. ¿Cómo encuentro el tamaño máximo de pila?

Cómo encontrar la versión de Redhat Linux instalada

Cómo aprovechar al máximo Qmmp 1.0

Cómo encontrar el número de puerto de un servicio en Linux

Cómo averiguar el estado conectado de un cable de red en Linux

¿Cómo averiguar los principales directorios o archivos que consumen espacio?

¿Cómo encuentro el UUID de un sistema de archivos?