GNU/Linux >> Linux Esercitazione >  >> Linux

Linux C:alla ricezione di un segnale è possibile conoscere il PID del mittente?

Sì. Registra il tuo gestore di segnale usando sigaction con il SA_SIGINFO flag, compilando il sa_sigaction campo. Ora la tua funzione di gestione accetta un siginfo_t* parametro, che include un campo si_pid .

Nota che si_pid viene impostato solo in alcune circostanze. Nel tuo caso, ti consigliamo di controllare che controlla quel si_code è impostato su SI_USER o SI_QUEUE . Leggi man 2 sigaction per saperne di più.


Sì, se usi il sigaction() chiama per impostare il tuo gestore di segnale invece di signal . In questo modo potrai configurare un gestore di segnale che accetta tre parametri:

  • Un int , per il numero del segnale (proprio come signal )
  • Un siginfo_t * , che è una struttura contenente tutti i tipi di informazioni sull'origine del segnale, incluso il pid del mittente, se applicabile. (Include anche alcune informazioni sulla causa del segnale per i segnali automatici come SIGSEGV .)
  • Un ucontext_t * , che ha a che fare con il thread che ha ricevuto il segnale. Per lo più ignorabile.

Linux
  1. 30 cose che non sapevi del kernel Linux

  2. Analisi del comando free:cosa deve sapere l'amministratore di sistema Linux

  3. I 7 spazi dei nomi Linux più utilizzati

  4. Qual è il modo per conoscere le dimensioni della cache L1, L2, L3 e della RAM in Linux?

  5. Accodamento del segnale in C

15 cose che devi sapere sulla struttura delle directory di Linux

Tutto ciò che devi sapere sul file system Linux

FreeBSD vs Linux:20 cose da sapere su entrambi i sistemi

Come conoscere i gruppi di un utente Linux

Come trovare il PID e il PPID di un processo in Linux

Tutti i modi possibili per ridurre il surriscaldamento del laptop in Linux