2016-11-09 3 views
1

Ich wollte den Quellcode des Standardhandlers von SIGABRT in Linux C sehen, aber ich konnte es nicht finden. Würdest du mir bitte helfen, es zu finden?Wie finde ich den Quellcode der Standard-Signal-Handler-Funktion?

+0

in Linux C? Du meinst Linux Kernel Signale Handler? –

+0

Es gibt keinen Standard-Signal-Handler auf Benutzerebene für SIGABRT (oder irgendein anderes Signal, kommen Sie dazu). Das Standardverhalten für SIGABRT ist das Beenden mit einem Core-Dump; Das alles wird vom Kernel verarbeitet, nicht vom Code auf Benutzerebene. –

Antwort

1

http://lxr.free-electrons.com ist eine gute Möglichkeit, die Quelle des Linux-Kernels zu lesen.

Eine schnelle Suche nach SIGABRT zeigt, dass es nur vom SIG_KERNEL_COREDUMP_MASK Makro verwendet wird. Dieses Makro wird wiederum ausschließlich von sig_kernel_coredump verwendet.

Verfolgen der Verwendung dieses Makros führt uns zu der Stelle, an der die Signalhandler in kernel/signal.c:2301 ausgeführt werden.

Dies entspricht dem, was die man pages uns sagen, d.h. die Standardaktion für SIGABRT ist, den Prozess zu beenden und den Programmkernspeicher zu entladen.

Verwandte Themen