在POSIX兼容的平台上,SIGFPE是当一个进程执行了一个错误的算术操作时发送给它的信号。SIGFPE的符号常量在头文件signal.h
中定义。因为在不同平台上,信号数字可能变化,因此常使用信号名称。
是信号名的通用前缀。是(浮点异常)的首字母缩略字。产生SIGFPE信号时并非一定要涉及浮点算术,之所以不修改名字是因为这么做会破坏向下兼容性。
导致SIGFPE被发送给进程的原因有很多。一个常见的例子是由于一个意外输入导致的溢出,或者在程序构造中的错误。
SIGFPE可以被处理。也就是说,程序员可以指定他们在接收到信号时想要的动作,例如调用一个子程序,忽略事件等。
在特定情形下,忽略SIGFPE可能导致程序出现意料之外的行为,包括但不限于由于不断重试违规操作而导致程序挂起。但是,忽略并非由计算造成的SIGFPE信号是安全的,例如通过kill
系统调用发送的那些。
一个通常的疏忽是认为除以零是SIGFPE的唯一来源。在一些架构上(包括IA-32),使用INT_MIN(最小的可以被表示的负整数值)除以-1的整数除法也会触发这个信号,因为商是一个无法被表示的正数。(比如8位有符号整数可以表示-128、+127和它们之间的整数。-128÷-1=+128 > +127,因此无法被表示而产生溢出并触发此信号)
这是一个尝试执行一个称为整数除以零,或的错误算术运算的ANSI C程序的例子。
int main(){ int x = 42/0; return 0; /* Never reached */}
在一个运行Linux的IA-32上编译运行,产生下列内容:
$ gcc -o sigfpe sigfpe.csigfpe.c: In function ‘main’:sigfpe.c:3: warning: division by zero$ ./sigfpeFloating point exception (core dumped)
一个来自gdb的栈跟踪显示在main
函数中发生了SIGFPE信号:
Program received signal SIGFPE, Arithmetic exception.0x08048373 in main ()
参考
- ^ sourceware.org Git - glibc.git/blob - bits/signum.h. 2001-07-06 .
参阅
计算机信号 |
---|
| POSIX | SIGABRT · SIGALRM · SIGFPE · SIGHUP · SIGILL · SIGINT · SIGKILL · SIGPIPE · SIGQUIT · SIGSEGV · SIGTERM · SIGUSR1 · SIGUSR2 · SIGCHLD · SIGCONT · SIGSTOP · SIGTSTP · SIGTTIN(英语:SIGTTIN) · SIGTTOU · SIGBUS · SIGPOLL · SIGPROF · SIGSYS · SIGTRAP · SIGURG(英语:SIGURG) · SIGVTALRM · SIGXCPU · SIGXFSZ · SIGIOT · SIGEMT · SIGSTKFLT · SIGIO · SIGCLD · SIGINFO · SIGPWR · SIGLOST · SIGWINCH · SIGUNUSED
相关- 克森尼索克森尼索 (希腊语:Χερσόνησος; 拉丁语:Chersonesus)是古希腊的一个殖民地,建于约2500年前,位于克里米亚的西南部。殖民地始建于公元前6世纪,由来自赫拉克里亚·潘提卡(Her
- 澳大利亚人列表澳大利亚人按职业分类,可以从以下各列表中查询。
- 低山低山指绝对高度为500-1000m,相对高度为200-500m,平均坡度5°-10°的山地,有些低山也可能比较陡峭。中国东部的低山分布较为广泛。低山的形体一般比较圆滑,常为缓坡,由山麓堆积物
- 1144年重要事件及趋势重要人物
- 林纳斯·托瓦兹林纳斯·班奈狄克·托瓦兹(瑞典语:Linus Benedict Torvalds,瑞典语:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida San
- 里施詹姆斯·埃尔罗伊·“吉姆”·里施(英语:James Elroy "Jim" Risch;1943年5月3日-),是一位美国共和党政治人物,现任爱达荷州美国参议院议员 ;前爱达荷州州长。
- 中风康复中风康复是一个患者通过治疗重获日常生活技能、重返有意义生活的过程。对于绝大多数患者,康复涉及到多个学科专业,需要由具备各种技能的健康专家组成医疗小组共同协作,包含护理
- 奥莉加·亚历山德罗芙娜·拉德任斯卡娅奥莉加·亚历山德罗芙娜·拉德任斯卡娅(俄语:Óльга Алекса́ндровна Лады́женская,1922年3月7日-2004年1月12日),俄罗斯数学家。她主要对于偏微分
- 月球内部构造月球内部构造在地质化学上分为地壳、地幔和核心,因此月球是经过分异的天体。这种构造相信是45亿年前形成不久之后月球岩浆海的部分结晶造成的。熔化外壳部分所需的能量通常被
- 自交不亲和性自交不亲和性(Self-incompatibility),系植物的花的柱头排斥传至其上的同花或同株的花粉粒的现象。不同植物实现自交不亲和性的分子机制不同,植物的自交不亲和性主要分为孢子体自
|
---|
|