(以下翻译针对Linux系统)
我假设core是由glibc的默认信号处理程序生成的。
但如果我搜索大部分结果都说操作系统生成核心转储。如果操作系统生成核心,那么信号处理程序会首先被调用(还是)核心先被转储?
(以下翻译针对Linux系统)
我假设core是由glibc的默认信号处理程序生成的。
但如果我搜索大部分结果都说操作系统生成核心转储。如果操作系统生成核心,那么信号处理程序会首先被调用(还是)核心先被转储?
http://lxr.linux.no/linux+v3.12.6/fs/coredump.c
如果进程接收到以下任何信号1,内核将尝试进行核心转储。#define SIG_KERNEL_COREDUMP_MASK (\
rt_sigmask(SIGQUIT) | rt_sigmask(SIGILL) | \
rt_sigmask(SIGTRAP) | rt_sigmask(SIGABRT) | \
rt_sigmask(SIGFPE) | rt_sigmask(SIGSEGV) | \
rt_sigmask(SIGBUS) | rt_sigmask(SIGSYS) | \
rt_sigmask(SIGXCPU) | rt_sigmask(SIGXFSZ) | \
SIGEMT_MASK
/proc/sys/kernel/core_pattern
和ulimit
等多种方式进行禁用或控制。人们还可以通过信号处理机制来控制这些信号的传递。