É claro que é possível escrever um manipulador de sinal que não faz nada e, assim, efetivamente ignorar o sinal, mas a primeira opção é ignorar especificamente o sinal usando o argumento SIG_IGN
da chamada do sistema signal()
.
Portanto, em termos de código, assumindo o sinal SIGINT
, estas são as três opções:
-
signal(SIGINT, SIG_IGN);
para ignorar - Para não chamar a função
signal()
ou chamá-la comsignal(SIGINT, SIG_DFL);
e, assim, deixar a ação padrão ocorrer, ou seja, encerrar o processo -
signal(SIGINT, termination_handler);
, ondetermination_handler()
é uma função que é chamada na primeira vez que o sinal ocorre.
Fonte: link
Para o caso específico de sinais onde a ação padrão é ignorar o sinal, as duas primeiras opções ( SIG_IGN
e SIG_DFL
) são idênticas. Criar uma função de manipulador vazia provavelmente não terá um efeito visível, além de uma sobrecarga (pequena).
NOTA: O signal()
é usado nesta resposta para simplificar, mas no novo código sigaction()
é recomendado por razões de portabilidade.