对其进行写操作 就一个段错误,以便信号处理函数捕捉到了SIGSEGV Segmentation fault信号
信号处理函数捕捉到信号之后 想修复段错误 所以给变量k分配一段内存空间 但是仍然会引发段错误
不知道哪儿错了 请高手指点一下
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/resource.h>
#define _CORE_SIZE 256 * 1024 * 1024
static int _core_dump_signals[] = {
SIGABRT, SIGFPE, SIGILL, SIGQUIT, SIGSEGV,
SIGTRAP, SIGSYS, SIGBUS, SIGXCPU, SIGXFSZ,
#ifdef SIGEMT
SIGEMT
#endif
};
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#endif
int *k;
int i = 2;
void _dump_and_restart1(int signo)
{
printf("I am receiving signo: %d\n", signo);
k=(int*)malloc(sizeof(int));
// printf("k=%x\n",k);
}
int main(void)
{
//_daemonize();
struct sigaction act;
int i;
memset(&act, 0, sizeof(act));
act.sa_handler = _dump_and_restart1;
sigfillset(&act.sa_mask);
for (i = 0; i < ARRAY_SIZE(_core_dump_signals); i ++)
sigaction(_core_dump_signals[i], &act, NULL);
sigprocmask(SIG_UNBLOCK, &act.sa_mask, NULL);
*k = 10;
printf("%x\n",k);
return 0;
}