特意测试了除0错误,signal捕获处理了SIGFPE,但是随后陷入死循环
本帖最后由 u011473808 于 2013-07-22 15:17:40 编辑
如题,我写了个很小的程序,来测试SIGFPE如何被捕获和处理:
#include<stdio.h>
#include<signal.h>
#include<sys/types.h>
void f(int signo)
{
printf("signo=%d\n",signo);
}
int main(int argc,char* argv[])
{
signal(SIGFPE,f);
int div=argc/(argc-1);
return 0;
}
编译运行。发现程序不断的打印
signo=8
问题是,我预想这个程序只打印一次signo就应该退出啊。我的想法错在哪里?
------解决方案--------------------这个解释不错
http://51hired.com/questions/14965/%E5%A6%82%E4%BD%95%E5%9C%A8SIGFPE%E5%90%8E%E7%BB%A7%E7%BB%AD%E8%BF%90%E8%A1%8C%EF%BC%9F