异常退出abort
使用abort()函数终止进程,会生成核心转储文件,可用于判断程序调用abort()时的程序状态
函数原形
#include <stdlib.h>
void abort(void)
函数 abort()通常产生 SIGABRT 信号来终止调用该函数的进程,SIGABRT 信号的系统默认操作是终止进程运行、并生成核心转储文件;当调用 abort()函数之后,内核会向进程发送 SIGABRT 信号
正点原子示例
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
static void sig_handler(int sig)
{
printf("接收到信号: %d\n", sig);
}
int main(int argc, char *argv[])
{
struct sigaction sig = {0};
sig.sa_handler = sig_handler;
sig.sa_flags = 0;
if (-1 == sigaction(SIGABRT, &sig, NULL)) {
perror("sigaction error");
exit(-1);
}
sleep(2);
abort(); // 调用 abort
for ( ; ; )
sleep(1);
exit(0);
}