Señales

Las señales, son mecanismos de comunicación asincrónica entre procesos o entre el núcleo y los procesos. Estas son utilizadas para notificar eventos o solicitar ciertas acciones.
Señales Personalizadas:
Se puede definir y enviar de forma personalizadas en los scripts; asignando nombres significativos.
# Definir una señal personalizada Mi_Senal=USR1 trap 'echo "Se recibió la señal $Mi_Senal"' $Mi_Senal # Enviar la señal personalizada kill -USR1 $PID_del_Proceso
Manejo de Errores con Señales:
Se puede utilizar, para manejar errores de manera más elegante. Por ejemplo, configurar un script para que se ejecute con una acción específica cuando se detecta un error.
# Manejo de errores con señales trap 'echo "Error detectado, realizando acciones de recuperación"; exit 1' ERR # Simular un error comando_que_puede_fallar
Señales en Programas de Larga Duración:
En programas que se ejecutan durante un período prolongado, puede ser útil manejarlas adecuadamente, para realizar tareas de limpieza antes de la terminación.
# Manejo de señales en programas de larga duración
trap 'limpieza_antes_de_salir' EXIT
trap 'manejar_senal_SIGTERM' SIGTERM
limpieza_antes_de_salir() {
echo "Realizando limpieza antes de salir..."
# Otras acciones de limpieza
}
manejar_senal_SIGTERM() {
echo "Recibida la señal SIGTERM, terminando de manera controlada..."
exit 0
}
# Resto del script
while true; do
# Código principal del programa
sleep 1
done
Ignorar Señales:
En algunos casos, se puede querer que un script las ignere. Para ello utiliza el comando trap con una cadena vacía.
# Ignorar la señal SIGTERM trap '' SIGTERM
Señales y Programas en Primer Plano:
- Cuando ejecutas un programa en primer plano y presionas
Ctrl+C, el programa recibe la señal SIGINT. Puedes capturar esta señal para realizar acciones específicas antes de que el programa se cierre.
# Manejo de la señal SIGINT en un script en primer plano
trap 'limpieza_antes_de_salir' SIGINT
limpieza_antes_de_salir() {
echo "Recibida la señal SIGINT, realizando limpieza antes de salir..."
# Otras acciones de limpieza
exit 0
}
# Resto del script
while true; do
# Código principal del programa
sleep 1
done
Estos son algunos aspectos adicionales relacionados con señales e interrupciones. La comprensión y el manejo adecuado de las son esenciales para construir scripts y programas robustos, confiables en entornos de línea de comandos.