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.