在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
相关- 声门声门(glottis)是两瓣声带之间的开口。在言语发生中,以声带的振动作为声音源的音称为浊音。声门是肺部压出的空气通过声带的出口。发生过程中牵涉到声门的音素称为声门音。声门
- 吉非替尼吉非替尼(Gefitinib),商品名为 艾瑞莎(Iressa),由阿斯利康制药和Teva(英语:Teva)发售。被用为治疗乳癌、肺癌和其它癌症。吉非替尼与厄洛替尼同是表皮生长因子受体抑制剂,抑制靶细胞的
- 蔡斯盐蔡斯盐(或称作蔡氏盐、Zeise盐)为一黄色、在空气中稳定的配合物,其化学式为K。蔡斯盐的阴离子中包含一个η2 的乙烯配体(哈普托数为2,表示乙烯有二个原子参与配位),是以铂原子为中
- 小梅沙小梅沙是位于深圳市盐田区大鹏湾的海滨旅游度假区,由海滨区,小梅沙海洋世界,小梅沙大酒店三大区组成。若8号线二期改制为32号线,则小梅沙站为换乘站。
- 1987年夏季世界大学生运动会第十四届夏季世界大学生运动会于1987年7月8日至7月19日在南斯拉夫社会主义联邦共和国萨格勒布举行,该届赛事共设12个大项。 * 主办国家/地区(南斯拉夫)
- 流亡流亡或逃亡,指任何人或团体,因为自然灾害、受到侵略、迫害(包括政治迫害)或其他负面因素而离开出生或定居的国家、地区。流亡未必指在国外流亡,如唐玄宗幸蜀,也可以称做流亡。
- 2010年荷兰羽毛球国际赛2010年荷兰羽毛球国际赛为第11届荷兰羽毛球国际赛,属世界羽联国际挑战赛级别,亦是2009/10赛季欧洲羽联巡回赛的其中一站。本届赛事于2010年4月8日至4月11日在荷兰韦斯特兰内的
- 3721<< 3720372137223723372437253726372737283729>> << 3700371037203730374037503760377037803790>><< 30003100320033003400
- 唐宝堃唐宝堃(1910年-1988年11月18日),广东中山人,中国男子篮球运动员、教练,南开五虎之一。曾担任中华全国体育总会委员、中国篮球协会主席。1999年被评为新中国篮球50杰。
- 罗林森罗林森(英语:Sir Henry Rawlinson, 1st Baronet;1810年4月5日-1895年3月5日),英国军官、东方学家。他成功释读大流士一世的贝希斯敦铭文上面3种文字之古波斯文部分,为释读美索不达
|
---|
|