信号 – 我可以忽略由除零产生的SIGFPE吗?

我有一个故意执行除以零的程序(并将结果存储在一个易变的变量中),以便在某些情况下停止.但是,我希望能够禁用此暂停,而无需更改执行除零的宏.

有什么方法可以忽略它吗?

我试过用了

#include <signal.h>
...
int main(void) {
  signal(SIGFPE, SIG_IGN);
  ...
}

但它仍然会消息“浮点异常(核心转储)”.

我实际上并没有使用该值,因此我并不关心分配给变量的内容; 0,随机,未定义……

编辑:我知道这不是最便携的,但它适用于在许多不同操作系统上运行的嵌入式设备.默认的暂停动作是除以零;其他平台需要不同的技巧来强制看门狗引发重启(例如禁用中断的无限循环).对于PC(linux)测试环境,我想在不依赖断言之类的情况下禁用除零时停止.

最佳答案
为什么你故意将零除以停止?你不能退出(-1)或某些等价物吗?

特别是如果你不需要除以0的结果,这就没有意义了.

转载注明原文:信号 – 我可以忽略由除零产生的SIGFPE吗? - 代码日志