Eu tenho um CD ao vivo que inicializa no Linux e executa um pequeno script Bash. O script procura e executa um segundo programa (que geralmente é um binário C ++ compilado).
Você deve abortar o segundo programa pressionando Ctrl+ C. O que deve acontecer é que o segundo programa seja interrompido e o script Bash continue executando a limpeza. O que realmente acontece é que o aplicativo principal e o script Bash são finalizados. O que é um problema.
Então eu usei o trap
built-in para dizer ao Bash para ignorar o SIGINT. E agora Ctrl+ Cencerra o aplicativo C ++, mas o Bash continua sua execução. Ótimo.
Ah, sim ... Às vezes, o "segundo aplicativo" é outro script do Bash. E, nesse caso, Ctrl+ Cagora não faz nada .
Claramente, meu entendimento de como essas coisas funcionam está errado ... Como controle qual processo obtém o SIGINT quando o usuário pressiona Ctrl+ C? Eu quero direcionar esse sinal para apenas um processo específico .
set -m
. É um pouco mais limpo e simples do que usarsetsid
toda vez que você administra uma criança.