为什么信号处理程序进入无限循环? –SIGSEGV

为什么信号处理程序进入无限循环? –SIGSEGV,第1张

概述为什么信号处理程序进入无限循环? – 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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1156917.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存