post

Señales

señales photo of road signage
Photo by Athena on Pexels.com

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.

Leave a Reply

Your email address will not be published. Required fields are marked *