Eu não acho que você pode alterar a ação padrão de um sinal, mais do que ignorar completamente o sinal ou instalar um manipulador de sinal. sigaction(2)
diz:
sa_handler specifies the action to be associated with signum and may
be SIG_DFL
for the default action, SIG_IGN
to ignore this signal, or
a pointer to a signal handling function. This function receives the
signal number as its only argument.
Se você quiser mudar a ação de algum sinal para uma das outras ações padrão, você pode levantar outro sinal que faz o que você quer (para obter um core dump ou para parar o processo), ou simplesmente sair (para terminar o processo).
SIGKILL
e SIGSTOP
são os dois sinais que você não pode capturar ou bloquear. sigaction(2)
:
signum specifies the signal and can be any valid signal except
SIGKILL
and SIGSTOP
.
e signal(7)
:
The signals SIGKILL
and SIGSTOP
cannot be caught, blocked, or
ignored.
No entanto, ignorar os sinais provenientes de falhas reais (acessos de memória inválidos, instruções inválidas) pode não deixar o processo em um estado muito estável.