在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
相关- N02BA·B·C·D·G·H·QI·J·L·M·N·P·R·S·VATC代码N02(镇痛药)是解剖学治疗学及化学分类系统的一个药物分组,这是由世界卫生组织药物统计方法整合中心(The WHO Collaboratin
- 神奈川条约《神奈川条约》(日语:神奈川条約,英语:Kanagawa Treaty)为1854年3月31日(嘉永7年旧历三月初三)江户幕府与美国所缔结的条约,日本通称为《日美和亲条约》(日语:日米和親条約)。签约代表
- NMTN-甲基色胺(英语:N-Methyltryptamine,NMT)是一种色胺衍生物。它作为一种生物碱,很可能在机体内由L-色氨酸合成,常见于几种植物的树皮、嫩芽(英语:shoot)和叶,包括维罗拉(英语:Virola)、金
- 骨科手术骨科即骨外科,也被称为矫形外科(英语:Orthopedic surgery 或 Orthopaedics,美式英文:Orthopedics)是使用手术和非手术的方法来治疗肌肉骨骼系统创伤、脊柱损伤、运动损伤、退行性
- 输卵管结扎术输卵管结扎(Tubal ligation或tubectomy),也称为输卵管切除术或是女性结扎,是针对女性的两个输卵管进行的避孕手术,可能是将输卵管夹紧和阻住,或是破坏输卵管的一小段并且封合一端(
- 20世纪的科学成就20世纪是变化巨大的一个世纪,20世纪的科学成就在各学科都取得了很多重大的进展和发现,对人类社会各方面产生了深刻的影响。有研究表明,人类80%的科学发现、技术发明和工程建设
- 埃朗根-纽伦堡大学埃朗根-纽伦堡大学(全名埃朗根-纽伦堡 弗里德里希·亚历山大大学,德文:Friedrich-Alexander-Universität Erlangen-Nürnberg,缩写:FAU)是德国一座历史悠久的大学,位于埃朗根和纽
- 松本宽也松本 宽也(1986年6月21日-)是日本著名的男演员,出生于秋田县,后来成为Avex Entertainment旗下男艺人。身高173cm,血型A型。他曾在拍摄特摄作品《魔法战队魔法连者》,饰演黄色魔法使
- 第一次布尔战争第一次布尔战争,1880年12月16日至1881年3月6日,是英国与南非布尔人之间的一次小规模战争。1652年,第一批荷兰移民抵达非洲南部的好望角定居。1795年和1806年,英国两次占领好望角
- 陈震 (官员)陈震曾任抗日战争、解放战争时期师长,后任太原县县长,解放战争胜利后太原县撤销,依照组织分配来到天津。到天津后任天津市外贸局(后改名经贸委,现名商务委)局长。
|
---|
|