Tengo un CD en vivo que arranca en Linux y ejecuta un pequeño script Bash. El script busca y ejecuta un segundo programa (que generalmente es un binario compilado de C ++).
Se supone que puedes abortar el segundo programa presionando Ctrl+ C. Lo que debería suceder es que el segundo programa se detiene y el script Bash continúa ejecutando la limpieza. Lo que realmente sucede es que tanto la aplicación principal como el script Bash finalizan. Que es un problema
Así que usé el trap
incorporado para decirle a Bash que ignorara SIGINT. Y ahora Ctrl+ Cfinaliza la aplicación C ++, pero Bash continúa su ejecución. Excelente.
Ah, sí ... A veces la "segunda aplicación" es otra secuencia de comandos Bash. Y en ese caso, Ctrl+ Cahora no hace nada en absoluto .
Claramente, mi comprensión de cómo funciona esto está mal ... ¿Cómo controlo qué proceso obtiene SIGINT cuando el usuario presiona Ctrl+ C? Quiero dirigir esta señal a un solo proceso específico .
set -m
. Es un poco más limpio y simple que usarlosetsid
cada vez que ejecutas a un niño.