C/C++ 处理程序 SIGFPE 是什么?

2024-02-10

好吧,我搜索了有关 SIGFPE 的文章,然后我写了一些测试,但它的行为很奇怪。那我只好在这里发帖寻求帮助了。 GCC/G++ 或 ISO C++ 是否明确定义了除以零会发生什么?

1)我搜索了这篇文章:除以零不会抛出 SIGFPE https://stackoverflow.com/questions/7267838/division-by-zero-does-not-throw-sigfpe它的输出相同是 inf

2)如果我将其重写如下:

void signal_handler (int signo) {
    if(signo == SIGFPE) {
      std::cout << "Caught FPE\n";
    }
}

int main (void) {
  signal(SIGFPE,(*signal_handler));

  int b = 1;
  int c = 0;
  int d = b/c;
  //fprintf(stderr,"d number is %d\n,d);
  return 0;
}

那么signal_handler就不会发生。但如果我取消注释该行

//fprintf(stderr,"d number is %d\n,d);

然后signal_handler继续调用。

有人可以解释一下吗?


这很有趣:随着fprintf注释掉后,编译器确定计算结果为:d = b/c是未使用的本地表达式,可以优化掉。

但显然,它在执行过程中并非没有副作用,但编译器在此阶段无法确定有关运行时环境的任何信息。令我惊讶的是,静态分析在现代编译器中(至少)没有将其视为警告。

@vonbrand是对的。您很幸运在(异步)信号处理程序中所做的事情。


Edit:当你说“signal_handler不断调用”时,你的意思是它无限期地重复吗?如果是这样,则底层系统调用重新启动可能会出现问题。尝试:siginterrupt(SIGFPE, 1);(假设它可用)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C/C++ 处理程序 SIGFPE 是什么? 的相关文章

  • 将处理后的图形绘制到另一个图形中

    我想将一个经过处理的图形绘制到另一个图形中 I have two graphics var gHead Graphics FromImage h var gBackground Graphics FromImage b Transform
  • 赋值运算符和复制构造函数有什么区别?

    我不明白C 中赋值构造函数和复制构造函数之间的区别 是这样的 class A public A cout lt lt A A lt lt endl The copy constructor A a b The assignment cons
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • C++11 函数局部静态 const 对象的线程安全初始化

    这个问题已在 C 98 上下文中提出 并在该上下文中得到回答 但没有明确说明有关 C 11 的内容 const some type create const thingy lock my lock some mutex static con
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 是否有一个 C++ 库可以从 PDF 文件中提取文本,例如 PDFBox for Java? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 去年 我使用 PDFBox 在 Java 中创建了一个应用程序来获取某些 PDF 文件中的原始文本 现在
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • 如何创建具有视觉源安全的 diff 文件?

    如果我想用svn创建一个目录的补丁文件 我需要做的就是右键单击该目录 单击tortoiseSVN 然后单击创建补丁 我就有了一个很好的补丁文件 其中包含了最新版本的差异svn 上的代码和我机器上的代码 有没有办法构建隐藏在 VSS 中的 d
  • 从历史任务中获取表单密钥

    我们从任务服务获取表单密钥 就像下面的代码片段一样 for Task task getTaskService createTaskQuery taskCandidateGroupIn candidateGroup initializeFor
  • iMessage 扩展和应用内购买

    我正在尝试使用 InApp Purchase 功能创建 iMessage 扩展 基本上我创建了一个 iMessage 应用程序 它创建了两个目标 您的应用程序目标 消息扩展 并且每个都有它自己的包标识符 扩展名有 app 前缀 现在我正在尝
  • 如何创建具有动态“zero_state”的dynamic_rnn(推理失败)

    我一直在使用 dynamic rnn 来创建模型 该模型基于 80 个时间周期信号 我想在每次运行之前将 initial state 归零 因此我设置了以下代码片段来完成此操作 state cell L1 zero state self B
  • 使用 JavaScript/jQuery 下载文件

    我有一个非常相似的指定要求here https stackoverflow com questions 1296085 download file using jquery 我需要让用户的浏览器在以下情况下手动开始下载 a someID c
  • 自定义 shebang 的 VSCode 语法高亮显示

    在工作中 我们在自定义环境下运行 python 因此我们使用非标准的 shebang 我测试过VSCode可以识别python文件without py 扩展名 如果他们有 shebang usr bin env python or usr
  • 使用 vue.js 和 vuetify 进行服务器端表单验证

    我看到了很多有关使用 Vuetify 进行客户端验证的文档 但发现很难找到有关 vuetify 和 vue 的服务器端验证消息的文档 PROBLEM 我有这个组件
  • 将数组组分组为单独的子数组组[重复]

    这个问题在这里已经有答案了 我有一个带有字符串的 JS 数组 例如 let a a a a b c c b b b d d e e e 我需要比较数组内的重复字符串 如果存在重复字符串 它将像这样分隔 a a a b c c b b b d
  • PHP 中先调用父构造函数再调用子构造函数

    我想知道是否可以在 PHP 中继承子代的 construct 之前调用父代的 construct Example class Tag construct Called first class Form extends Tag constru
  • MySQL:GROUP_CONCAT 与 LEFT JOIN

    我在使用 MySQL 的 GROUP CONCAT 函数时遇到问题 我将使用一个简单的帮助台数据库来说明我的问题 CREATE TABLE Tickets id INTEGER NOT NULL PRIMARY KEY requester
  • Python 多处理似乎不使用多个核心

    我想使用 Python 多重处理来运行预测模型的网格搜索 当我查看核心使用情况时 它似乎总是只使用一个核心 知道我做错了什么吗 import multiprocessing from sklearn import svm import it
  • 如何从Python开始计算下个月的38天

    例如 让我们考虑发票日期 09 11 2021 但是 payment period 为 38 天 那么它应该从 1 12 2021 开始到 7 01 2022 因为 12 月有 31 天 那么 due date 将是 7 01 2022 发
  • 使用nginx和gunicorn在django中通过ip限制对管理url的访问

    我试图通过在 nginx 中使用简单的基于主机的访问控制来限制对 django 应用程序管理部分的访问 不幸的是 nginx 似乎不遵守配置请求 这是我在 nginx 中这个特定部分的设置 gunicorn setup location p
  • C++:将指针变量传递给函数

    我有一个类节点 class Node public int item Node nextLink 在函数外部我声明一个 Node 指针 Node newNode 然后 我将此指针传递给函数 foo void foo Node node no
  • 如何在 Pandas 数据框中选择基于行的类别

    这确实微不足道 但不敢相信我已经闲逛了一个小时 仍然可以找到答案 所以在这里 df pd DataFrame cats a b vals 1 2 df cats df cats astype category df 我的问题是如何选择 ca
  • 读取接收和发送的网络流量字节

    在 Objective C 中获取网络流量发送和接收字节的最简单方法是什么 这并不容易 而且它来自 C 而不是 Objective C 但是您需要的所有信息都存储在返回给您的接口地址的 ifa data 字段中获取ifaddrs 3 您可以
  • Google 地图 API 密钥警报

    我的 Google 地图 API 密钥有问题 我收到一条警报说 This web site needs a different Google Maps API key 当我按 确定 收到警报时 地图正在加载并且工作正常 同样的问题已经发布
  • 如何向 Python shell 添加制表符补全?

    当使用启动 django 应用程序时python manage py shell 我得到一个 InteractiveConsole shell 我可以使用制表符完成等 Python 2 5 1 r251 54863 Apr 15 2008
  • Rails image_tag 旋转图像

    我使用亚马逊的 S3 进行图像存储 并配置了载波和雾 图像似乎存储正确 但是当我有 肖像 图像 宽度小于高度 时 它无法正确显示 而是将图像旋转到其一侧 任何正确方向的指示将不胜感激 上传者 image uploader rb class
  • C/C++ 处理程序 SIGFPE 是什么?

    好吧 我搜索了有关 SIGFPE 的文章 然后我写了一些测试 但它的行为很奇怪 那我只好在这里发帖寻求帮助了 GCC G 或 ISO C 是否明确定义了除以零会发生什么 1 我搜索了这篇文章 除以零不会抛出 SIGFPE https sta