在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
相关- 陈国陈,出
土金文资料作敶,是中国历史上西周至春秋时代的一个妫姓诸侯国,是帝舜后裔,为三恪和春秋十二诸侯之一。建国君主为担任周文王的陶正一职(也就是掌管制作陶器的官),的遏父(又
- 朗纳·弗里施朗纳·安东·基蒂尔·弗里施(挪威语:Ragnar Anton Kittil Frisch,1895年3月3日-1973年1月31日),挪威经济学家,1969年诺贝尔经济学奖获得者。朗纳·弗里施1895年出生在挪威奥斯陆的
- 结构模体结构模体(英语:structural motif,亦称为结构基序)是链状生物分子(如蛋白质或核酸)中的一种超二级结构,也存在于其它分子之中。结构模体使得我们无法预测蛋白的生物学功能:不同蛋白质
- 舞鹤 (作家)舞鹤(1951年10月13日-),本名陈国城,台湾作家,成大中国文学系毕业,曾就读师大国文所、东华创作与英语文学研究所。
- 全效工作室全效工作室(英语:Ensemble Studios),隶属于微软的游戏开发公司。其经典作品包括广受欢迎的帝国时代系列。1995年,该公司由Tony Goodman,里克·古德曼,Bruce Shelley(英语:Bruce Shell
- 弗雷德里希·绍姆贝格,第一代绍姆贝格公爵弗雷德里希·绍姆贝格,第一代绍姆贝格公爵(Friedrich Hermann,或Frédéric-Armand,1st Duke of Schomberg,原为Schönberg,勋伯格;1615年12月或1616年1月–1690年)KG,知名的德意志军
- 贝尔纳·皮埃尔·马尼昂贝尔纳·皮埃尔·马尼昂(Bernard Pierre Magnan) (1791年12月7日巴黎 – 1865年5月29日在巴黎) 法国元帅,波拿巴主义者。1809年,马尼昂在第66队作为一个现役士兵开始他的职业
- 台铁DR2000型柴油车 日本东急DR2000型柴油客车/DR2050无动力拖车是台湾铁路管理局所使用的一款柴油客车,由用于行驶旧东线光华号之LDR2300型柴油动力车/LTPB1900型无动力拖车拓宽轨距而成。198
- 冈国高冈国高(生年未详 - 天正5年10月10日)战国时代武将。松永久秀的家臣。周防守。大和国冈城主,大和的土豪。永禄11年(1568年)9月,织田信长奉足利义昭上京,冈国高与松永久秀共同很早就
- 托隆尼亚家族托隆尼亚家族(意大利语:Torlonia),是一个起源于法国,发迹于罗马的贵族家族,该家族于18-19世纪透过协助梵谛冈进行财务管理而获得了巨大财富,由于其惊人的财富,在意大利语流行辞典中,
|
|---|
|