É 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.