Para responder a su segunda pregunta primero: SIGSTOPy SIGKILLno puede ser captado por la aplicación, pero cualquier otra señal puede, incluso SIGSEGV. Esta propiedad es útil para la depuración; por ejemplo, con el soporte correcto de la biblioteca, puede escuchar SIGSEGVy generar una traza inversa de la pila para mostrar dónde sucedió esa falla predeterminada.
La palabra oficial (para Linux, de todos modos) sobre lo que hace cada señal está disponible escribiendo man 7 signaldesde una línea de comando de Linux. http://linux.die.net/man/7/signal tiene la misma información, pero las tablas son más difíciles de leer.
Sin embargo, sin algo de experiencia con las señales, es difícil saber de las descripciones breves lo que hacen en la práctica, así que aquí está mi interpretación:
Disparado desde el teclado
SIGINTsucede cuando golpeas CTRL+C.
SIGQUITse activa por CTRL+\, y vuelca el núcleo.
SIGTSTPsuspende tu programa cuando golpeas CTRL+Z. A diferencia SIGSTOP, es capturable, lo que brinda a los programas la viposibilidad de restablecer el terminal a un estado seguro antes de suspenderse.
Interacciones terminales
SIGHUP ("colgar") es lo que sucede cuando cierra su xterm (o desconecta el terminal) mientras su programa se está ejecutando.
SIGTTINy SIGTTOUpause su programa si intenta leer o escribir en el terminal mientras se ejecuta en segundo plano. Para SIGTTOUque suceda, creo que el programa debe estar escribiendo /dev/tty, no solo stdout predeterminado.
Activado por una excepción de CPU
Esto significa que su programa intentó hacer algo mal.
SIGILLsignifica una instrucción de procesador ilegal o desconocida. Esto podría suceder si intentara acceder a los puertos de E / S del procesador directamente, por ejemplo.
SIGFPEsignifica que hubo un error matemático de hardware; Lo más probable es que el programa haya intentado dividir por cero.
SIGSEGV significa que su programa intentó acceder a una región de memoria no asignada.
SIGBUSsignifica que el programa accedió a la memoria incorrectamente de alguna otra manera; No entraré en detalles para este resumen.
Interacción del proceso
SIGPIPEsucede si intenta escribir en una tubería después de que el lector de la tubería cerró su extremo. Ver man 7 pipe.
SIGCHLDsucede cuando un proceso secundario que creó se cierra o se suspende (por SIGSTOPo similar).
Útil para auto-señalización
SIGABRTgeneralmente es causado por el programa que llama a la abort()función y causa un volcado de núcleo por defecto. Una especie de "botón de pánico".
SIGALRMes causado por la alarm()llamada del sistema, lo que hará que el núcleo entregue un mensaje SIGALRMal programa después de un número específico de segundos. Ver man 2 alarmy man 2 sleep.
SIGUSR1y SIGUSR2se usan sin embargo, el programa le gusta. Podrían ser útiles para la señalización entre procesos.
Enviado por el administrador
Estas señales generalmente se envían desde el símbolo del sistema, a través del killcomando fgo bgen el caso de SIGCONT.
SIGKILLy SIGSTOPson las señales que no se pueden bloquear. El primero siempre termina el proceso de inmediato; el segundo suspende el proceso.
SIGCONT reanuda un proceso suspendido.
SIGTERMes una versión atrapable de SIGKILL.