Você só pode ignorar os sinais ( SIG_IGN
); você não seria capaz de fornecer um manipulador de sinal a partir do shell ( trap
) ou dentro de um programa C ( signal(2)
). Quando exec é chamado, qualquer manipulador de sinal seria substituído.
Exemplo:
:
trap "" 1 2
exec sleep 100000
Em seguida, ligue para o programa, seja em segundo plano ou para frente, e envie um SIGHUP
ou SIGINT
para o programa. É ignorado. Colocar o código no trap faz com que o sinal seja resetado no exec:
:
trap "echo signal caught" 1 2
exec sleep 10000
Isto não imprime "sinal capturado" de você enviar os sinais, mas na verdade terminará o programa.