2010-05-13 9 views
12

Si tengo un proceso que recibe señales de otros procesos, ¿hay alguna forma de que yo diga de alguna manera qué proceso (si lo hubo) envió una señal?Seguimiento de orígenes de señal UNIX?

strace me permite rastrear qué señales ha recibido un proceso, pero no me permite rastrear quién las emitió.

+0

Por lo que puedo ver, las soluciones actuales no me permiten saber qué proceso mató/detuvo otro proceso si se utilizó SIGKILL o SIGSTOP. ¿Cierto? – hagello

Respuesta

8

No desde fuera del proceso. El segundo argumento para el manejador de señal es una estructura siginfo_t que contiene el PID del proceso de envío como uno de sus miembros. Vea sigaction(2) para más detalles.

1

Ptrace se puede utilizar para detectar el remitente también. Hay una llamada ptrace(GETSIGINFO), que dará a un depurador la oportunidad de leer (y, posiblemente, cambiar) siginto_t struct.

Cuestiones relacionadas