Passa o SIGINT pelo script bash para o aplicativo

1

Eu tenho um aplicativo Linux, escrito em C ++, que intercepta a interrupção SIGINT para fazer uma limpeza final antes de sair. Eu chamo este aplicativo dentro de um script bash. Agora, quando eu digito control-C com o script bash em execução no primeiro plano, o script termina, assim como o programa que ele invoca, mas sem executar o código de limpeza final. Como posso fazer com que a interrupção passe pelo script bash, diretamente para o aplicativo, resultando na limpeza final e depois em uma saída normal que faz com que o próprio script saia?

    
por sizzzzlerz 12.03.2016 / 02:06

2 respostas

1

bash também tem a capacidade de capturar o SIGINT . Seria possível interceptar o sinal para que o script não morra e, em seguida, no manipulador de traps, use kill para passar o sinal para o seu aplicativo.

    
por 12.03.2016 / 02:43
1
#somecommand has to be a unique substring of the command being run

trap "kill -3 %?somecommand" sigint

somecommand&
wait %?somecommand
    
por 12.03.2016 / 02:49