Comment un processus UNIX peut-il ignorer les signaux système?

Chaque fois que j’appuie sur Ctrl + C à l’intérieur du terminal, un signal SIGINT est envoyé au processus. Mais qu’arrive-t-il parfois au processus et qu’il ne répond pas au signal? Fondamentalement, je demande comment un processus peut ignorer le signal théoriquement?

À l’exception de SIGKILL et SIGSTOP, tout processus est libre d’installer son propre gestionnaire pour tout signal, qui peut répondre comme bon lui semble (jusqu’à ignorer complètement le signal).

Vous devez installer le gestionnaire de signal. Le plus simple est:

#include  ... /* Put this somewhere at the beginning of your code */ sigignore(SIGINT); 

Cela fera ignorer le signal spécifié (SIGINT). Alternativement, vous pouvez avoir une fonction appelée lorsque le signal se produit:

 void function(int sig) { // do something } // Somewhere at the beginning of your code put this... sigset(SIGINT, function); 

Voir les détails dans les pages de manuel correspondantes. Il existe également des fonctions plus complexes pour manipuler les signaux, par exemple la sigaction.