Depende de como e como você o constrói.
Embora o trapping possa ser uma opção interessante, imagino que alguns ambientes possam fazer com que ele não funcione como esperado.
No Rails, por exemplo, resgatar Interrupt
, bem como resgatar Exception
(Qual Interrupt
estende) fará com que o programa se comporte "anormalmente" nos sinais de interrupção. No Java, capturar Throwable
tem um comportamento similar.
Interceptar o sinal de interrupção pode ser uma boa opção, mas você deve considerar quando iniciar e quando interromper o trapping, o que pode acontecer entre e como o seu aplicativo responderá a esse "trapping" (ou seja, sua aplicação morrer de qualquer maneira ou lançar uma exceção ou algum outro erro? Ele ignorará seu aplicativo, mas ainda matará o apt-get? e assim por diante).
Além disso, kill pid
pode causar um comportamento diferente e, até onde eu sei, kill -9 pid
vai acabar com o seu processo, não importa o que você faça. Eu consideraria executá-lo como um trabalho em segundo plano que salva em um arquivo e monitorar o arquivo para alterações até que a atualização seja concluída (talvez até mesmo mostrá-lo na tela), possivelmente durante o salvamento / captura / etc SIGINTs. Eu também possivelmente verificaria algo como definir nível de execução ou algo assim para evitar um simples kill pid
, já que a necessidade de um kill -9 pid
pode evitar erros honestos.