GNU/Linux >> Tutoriales Linux >  >> Linux

Linux C:al recibir una señal, ¿es posible saber el PID del remitente?

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 que signal )
  • 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 como SIGSEGV .)
  • A ucontext_t * , que tiene que ver con qué subproceso recibió la señal. Mayormente ignorable.

Linux
  1. Los 7 espacios de nombres de Linux más utilizados

  2. Linux – ¿Encontrar el Pid del proceso usando un puerto específico?

  3. ¿Alguna forma de saber el tamaño de L1, L2, L3 Cache y RAM en Linux?

  4. Verifique el límite de FD abierto para un proceso dado en Linux

  5. ¿Cómo saber la ruta de JVM en un sistema Linux?

15 cosas que debe saber sobre la estructura de directorios de Linux

Todo lo que necesita saber sobre el sistema de archivos de Linux

FreeBSD vs Linux:20 cosas que debe saber sobre ambos sistemas

Cómo saber los grupos de un usuario de Linux

Cómo encontrar el PID y PPID de un proceso en Linux

Todas las formas posibles de reducir el sobrecalentamiento de la computadora portátil en Linux