2016-11-09 3 views
1

Я хотел увидеть исходный код обработчика по умолчанию SIGABRT в Linux C, но я не смог его найти. Не могли бы вы помочь найти его?Как найти исходный код функции обработчика сигнала по умолчанию?

+0

в Linux C? Вы имеете в виду обработчик сигналов ядра Linux? –

+0

На уровне пользователя для SIGABRT (или любого другого сигнала) не поступает сигнал по умолчанию. Поведение по умолчанию для SIGABRT заключается в завершении с дампом ядра; все это обрабатывается ядром, а не кодом пользователя. –

ответ

1

http://lxr.free-electrons.com - отличный способ прочитать источник ядра Linux.

Выполнение оперативного поиска SIGABRT показывает, что оно используется только макросом SIG_KERNEL_COREDUMP_MASK. Этот макрос, в свою очередь, используется исключительно sig_kernel_coredump.

Отслеживание использования этого макроса приводит нас к тому месту, где обработчики сигналов выполняются в kernel/signal.c:2301.

Это соответствует тому, что сообщает нам man pages, то есть действие по умолчанию для SIGABRT - это прекращение процесса и сброс памяти ядра программы.

Смежные вопросы