GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver la source d'un signal POSIX

La page de manuel pour sigaction(2) suggère que le PID de l'expéditeur du signal est disponible dans la structure siginfo_t transmise à votre gestionnaire de signal. Cela nécessite évidemment que vous utilisiez sigaction().

À partir de la page de manuel :

La structure de sigaction est définie comme quelque chose comme :

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

Et le siginfo_t la structure ressemble à ceci :

   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. Comment connaître les charges exécutables des bibliothèques dynamiques lors de l'exécution ?

  2. Comment puis-je trouver la taille de pile maximale ?

  3. Comment diriger les résultats de 'find' vers mv sous Linux

  4. Comment trouver le gestionnaire de fichiers par défaut ?

  5. Comment savoir ce qui utilise tout l'espace sur ma partition / ?

Comment trouver la version de Redhat Linux installée

Comment tirer le meilleur parti de Qmmp 1.0

Comment trouver le numéro de port d'un service sous Linux

Comment connaître l'état de connexion d'un câble réseau sous Linux

Comment trouver les répertoires ou fichiers les plus gourmands en espace ?

Comment connaître le type de virtualisation d'un VPS linux ?