¿Por qué solo hay dos señales definidas por el usuario?

11

En la lista de señales definidas en un sistema Linux, hay dos señales establecidas como señales definidas por el usuario ( SIGUSR1y SIGUSR2). Se generarán o captarán otras señales en situaciones específicas, pero los SIGUSR se dejan para el uso de la aplicación del usuario.

Entonces, ¿por qué solo dos señales?

saeedn
fuente

Respuestas:

13

Históricamente, Unix tenía sólo estas dos señales, pero los sistemas modernos tienen las señales en tiempo real SIGRTMIN... SIGRTMAX.

Debido a la semántica extraña e inportable de las API de señal, casi no hay caso de uso donde las señales serían preferibles sobre otros mecanismos de comunicación como las tuberías. Por lo tanto, asignar un nuevo número de señal nunca se ha visto como necesario.

CL.
fuente
Gracias. En mi caso, manejo SIGUSR1 para la reconfiguración. Significa que cuando el administrador quiere cambiar la configuración de mi proceso en ejecución, cambia el archivo de configuración y envía un SIGUSR1 a mi PID (aquí es más fácil usar una tubería). Y uso SIGUSR2 para el cierre del proceso limpio. ¡No había sido necesario para mí usar una señal diferente a estas dos, pero algunas características de tiempo de ejecución podrían implementarse manejando otras señales definidas por el usuario!
saeedn
2
@saeedn ¿Por qué no utiliza SIGTERM para el cierre del proceso limpio? Para eso es. Muchos otros servidores usan SIGHUP (que de otro modo solo es significativo en un proceso interactivo) como una señal para recargar los archivos de configuración, por lo que puede considerar eso.
Random832
@ Random832 Tienes razón, sé lo que dices. Pero el problema en el que estaba pensando era que ¿qué pasa si me quedo sin mis 31 opciones de señales?
saeedn
1
¿Dónde puedo obtener más información sobre las señales SIGRTMIN ... SIGRTMAX? ¿Dónde se definen cuando se usan?
Strubbl
6

Las señales solo proporcionan un medio primitivo de comunicación. En particular, no hay forma de adjuntarles ninguna información. El destinatario solo conoce el número de señal, no la identidad del remitente. Se pueden combinar múltiples señales en una. Dadas todas estas restricciones, no hay tantos propósitos útiles para las señales.

Para propósitos más complejos, use medios de interacción más complejos, como tuberías o enchufes.

Gilles 'SO- deja de ser malvado'
fuente