Ho un CD live che si avvia su Linux ed esegue un piccolo script Bash. Lo script cerca ed esegue un secondo programma (che di solito è un binario C ++ compilato).
Dovresti essere in grado di interrompere il secondo programma premendo Ctrl+ C. Ciò che dovrebbe accadere è che il secondo programma si interrompe e lo script Bash continua a eseguire la pulizia. Ciò che realmente accade è che sia l'applicazione principale sia lo script Bash terminano. Qual è un problema.
Quindi ho usato il trap
builtin per dire a Bash di ignorare SIGINT. E ora Ctrl+ Ctermina l'applicazione C ++, ma Bash continua a funzionare. Grande.
Oh sì ... A volte la "seconda applicazione" è un'altra sceneggiatura di Bash. E in quel caso, Ctrl+ Cora non fa nulla .
Chiaramente la mia comprensione di come funziona questa roba è sbagliata ... Come posso controllare quale processo ottiene SIGINT quando l'utente preme Ctrl+ C? Voglio indirizzare questo segnale a un solo processo specifico .
set -m
. È un po 'più pulito e semplice rispetto all'usosetsid
ogni volta che si esegue un bambino.