2016-11-09 3 views
1

Je voulais voir le code source du gestionnaire par défaut de SIGABRT dans Linux C, mais je ne pouvais pas le trouver. Pourriez-vous s'il vous plaît aidez-vous à le trouver?Comment trouver le code source de la fonction de gestionnaire de signal par défaut?

+0

dans Linux C? Vous voulez dire gestionnaire de signaux de noyau Linux? –

+0

Il n'y a pas de gestionnaire de signal par défaut au niveau de l'utilisateur pour SIGABRT (ou tout autre signal, venir à cela). Le comportement par défaut de SIGABRT est de se terminer avec un core dump; tout est géré par le noyau, pas par le code au niveau de l'utilisateur. –

Répondre

1

http://lxr.free-electrons.com est un excellent moyen de lire la source du noyau Linux.

Une recherche rapide pour SIGABRT montre qu'il est utilisé uniquement par la macro SIG_KERNEL_COREDUMP_MASK. Cette macro est à son tour utilisée exclusivement par sig_kernel_coredump. Traçage de l'utilisation de cette macro nous conduit à l'endroit où les gestionnaires de signaux sont exécutés en kernel/signal.c:2301.

Ceci correspond à ce que nous disent les man pages, c'est-à-dire que l'action par défaut pour SIGABRT est de terminer le processus et de vider la mémoire principale du programme.