概述为什么信号处理程序进入无限循环? – SIGSEGV
任何想法为什么信号处理程序进入无限循环?
这是代码。 请帮帮我。
enter code here 9 voID SIGSEGV_handler(int signal) 10 { 11 printf(\”Segmentation fault caught….n\”); 12 printf(\”Value of instance variable: i = %dnn\”,i); 13 } 16 17 int main() 18 { 19 char *mallocPtr,*callocPtr,*reallocPtr,*memalignPtr,*vallocPtr; 20 struct sigaction sa; 21 22 sa.sa_handler=SIGSEGV_handler; 23 sigaction(SIGSEGV,&sa,NulL); 24 37 38 printf(\”The segmentation fault handler will be entered for i = 3,4,5 and 6n\”); 39 40 41 for(i=0; i<7; i++) 42 { 43 printf(\”i = %dn\”,i); 44 45 mallocPtr=(char*)malloc(3); 46 printf(\”Malloc address : %xn\”,mallocPtr); 47 strcpy(mallocPtr,\”Hhvhgvghsvxhvshxv\”); 48 puts(mallocPtr);
如何使用boost在C ++中独立于系统时间实现定时器callback
如何检查一个文件是否存在c
在C ++应用程序中检查Internet连接的可靠方法:gethostbyname()失败
指定的参数超出范围C#
根据variables地址存储variables(数据段或堆或BSS)的位置?
检索文件属性
shell扩展:Dragqueryfile返回至多16(在windows 7中)
如何知道在Qt中连接新的USB存储设备?
linux内核的List.h
DLL可以调用/加载另一个DLL吗?
SIGSEGV的默认 *** 作是终止你的进程。 但是你安装一个处理程序并覆盖它:
/* Does nothing to \”fix\” what was wrong with the faulting * instruction. */ voID SIGSEGV_handler(int signal) { printf(\”Segmentation fault caught….n\”); printf(\”Value of instance variable: i = %dnn\”,i); }
因此,对于触发sigsegv的每条指令,调用此处理程序并重新启动指令 。 但是你的处理程序并没有做任何事情来解决错误指令的问题。
总之,当指令重新启动时,会再次发生故障。 再一次,然后……你明白了。
http://pubs.opengroup.org/onlinepubs/009604599/functions/xsh_chap02_04.HTML#tag_02_04
SIGBUS,SIGFPE,SIGILL或SIGSEGV信号的信号捕获函数正常返回,而不是由kill(),sigqueue()或raise()生成。
总结
以上是内存溢出为你收集整理的为什么信号处理程序进入无限循环? – SIGSEGV全部内容,希望文章能够帮你解决为什么信号处理程序进入无限循环? – SIGSEGV所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容