在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
相关- 自然地理学自然地理学是地理学两大分支之一,注重于研究自然环境的形式和活动。而相对地,对建成环境的研究则归属于人文地理学。在自然地理研究中,地球常按照不同的环境被分为几个圈层,如大
- 未解决的物理学问题有一些重要但尚未解决的物理问题。其中包括理论性的,即现时理论未能够给予观测到的物理现象或实验结果令人满意的解释;还有实验性的,即能够周密测试某先进理论或深入研究某物理
- 雨果·德弗里斯许霍·马里·德弗里斯(Hugo Marie de Vries,荷兰语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode"
- 宪法法庭宪法法庭,由中华民国司法院设置的司法院大法官所组织而成,合议审理政党违宪之解散案件,以及由立法院提出的总统及副总统弹劾案等事项。1992年5月28日,中华民国宪法第二次增修条
- 久米正雄久米正雄(1891年11月23日-1952年3月1日),俳号三汀(さんてい),是日本小说家与剧作家,出生于日本长野县上田市。以芥川龙之介亲密好友的身份为大众所周知。当年二人一起投入漱石门下时
- 加利福尼亚多明尼克大学加州多明尼克大学(Dominican University of California)是位于美国加利福尼亚州圣拉菲尔的一所私立大学,由多明我会创立于1890年,最初的目的是教育因淘金潮而搬迁至此的女性。19
- 斯蒂芬·A·道格拉斯史蒂芬·阿诺·道格拉斯(Stephen Arnold Douglas,1813年4月23日-1861年6月3日),美国佛蒙特州布兰登人,民主党籍政治家。道格拉斯曾任众议员、参议员,也是内布拉斯加法案的设计者,并
- 广丰广丰区是中国江西省上饶市所辖的一个市辖区,位于江西省最东部,与浙江省、福建省交界。广丰古为吴楚交界地带,有“吴头楚尾”之称,始建于唐,原称永丰,清雍正十年改称广丰。广丰地处
- 特奥巴尔德·冯·贝特曼-霍尔韦格特奥巴尔德·冯·贝特曼-霍尔韦格(德语:Theobald von Bethmann-Hollweg,1856年11月29日-1921年1月1日),德国政治家,曾于1909年至1917年间任德意志帝国总理。特奥巴尔德·冯·贝特曼
- 苏联精神病学的政治滥用苏联精神病学的政治滥用(俄语:использованием психиатрии в политических целях;英语:political abuse of psychiatry in the Sovie
|
---|
|