Quiero saber la información completa sobre la SIGTTIN
señal, por ejemplo quiero saber si la SIGTTIN
señal se puede manejar o no.
Estedocumentaciónsolo dice lo siguiente sobre la SIGTTIN
señal:
SIGTTIN 21,21,26 Detener entrada de terminal para proceso en segundo plano
Y escribir man SIGTTIN
en la terminal no arrojó nada.
Editar:
Lo que quise decir no fue qué señales se pueden enviar a un proceso, sino más bien si el proceso que recibe la señal puede cambiar la acción predeterminada de la señal. Por ejemplo: la acción predeterminada para la SIGTTIN
señal es detener el proceso, puede cambiar esta acción predeterminada en su programa usando la sigaction()
función. Ahora bien, algunas señales no te permiten cambiar sus acciones predeterminadas, y esto es lo que estoy buscando (una documentación de qué señales no te permiten cambiar sus acciones predeterminadas).
Respuesta1
Puede utilizar este comando, que suele ser correcto.
kill -l | egrep SIGTTIN
También puede escribir un script PERL rápido para capturar SIGTTIN + luego ejecutarlo en segundo plano + generar un mensaje de diagnóstico simple si se ejecuta su controlador SIGTTIN.
Respuesta2
No creo que puedas cambiar la acción predeterminada de una señal, como tampoco ignorarla por completo o instalar un controlador de señales.sigaction(2)
dice:
sa_handlerespecifica la acción que se asociará con signum y puede ser
SIG_DFL
para la acción predeterminada,SIG_IGN
ignorar esta señal o un puntero a una función de manejo de señales. Esta función recibe el número de señal como único argumento.
Si desea cambiar la acción de alguna señal a una de las otras acciones predeterminadas, puede generar otra señal que haga lo que desea (obtener un volcado del núcleo o detener el proceso), o simplemente salir (para finalizar el proceso). ).
SIGKILL
y SIGSTOP
son las dos señales que no puedes captar ni bloquear. sigaction(2)
:
firmarespecifica la señal y puede ser cualquier señal válida excepto
SIGKILL
ySIGSTOP
.
Las señales
SIGKILL
noSIGSTOP
se pueden captar, bloquear ni ignorar.
Sin embargo, ignorar las señales que provienen de fallas reales (accesos a la memoria no válidos, instrucciones no válidas) podría no dejar el proceso en un estado muy estable.