当前位置: 技术问答>linux和unix
信号处理函数的问题
来源: 互联网 发布时间:2016-09-30
本文导语: 我在程序中故意设置了未分配内存地址的变量 k 对其进行写操作 就一个段错误,以便信号处理函数捕捉到了SIGSEGV Segmentation fault信号 信号处理函数捕捉到信号之后 想修复段错误 所以给变量k分配一段内存空间 ...
我在程序中故意设置了未分配内存地址的变量 k
对其进行写操作 就一个段错误,以便信号处理函数捕捉到了SIGSEGV Segmentation fault信号
信号处理函数捕捉到信号之后 想修复段错误 所以给变量k分配一段内存空间 但是仍然会引发段错误
不知道哪儿错了 请高手指点一下
对其进行写操作 就一个段错误,以便信号处理函数捕捉到了SIGSEGV Segmentation fault信号
信号处理函数捕捉到信号之后 想修复段错误 所以给变量k分配一段内存空间 但是仍然会引发段错误
不知道哪儿错了 请高手指点一下
#include
#include
#include
#include
#include
#include
#include
#include
#include
#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: %dn", signo);
k=(int*)malloc(sizeof(int));
// printf("k=%xn",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