【发布时间】:2010-09-29 23:46:36
【问题描述】:
我有一个程序故意执行除以零(并将结果存储在 volatile 变量中)以便在某些情况下停止。但是,我希望能够禁用这种暂停,而无需更改执行除以零的宏。
有什么办法可以忽略吗?
我试过了
#include <signal.h>
...
int main(void) {
signal(SIGFPE, SIG_IGN);
...
}
但它仍然会因消息“浮点异常(核心转储)”而死亡。
我实际上并没有使用该值,所以我并不真正关心分配给变量的内容; 0、随机、未定义...
编辑:我知道这不是最便携的,但它适用于在许多不同操作系统上运行的嵌入式设备。默认停止动作是除以零;其他平台需要不同的技巧来强制看门狗引起的重启(例如禁用中断的无限循环)。对于 PC (linux) 测试环境,我想禁用除以零时的暂停,而不依赖于断言之类的东西。
【问题讨论】:
-
+1 好问题。请参阅stackoverflow.com/questions/487737 的 cmets。 5 下来,10 去(每天 1 次)
标签: signals posix divide-by-zero sigfpe