当发生段错误时不调用信号处理程序?

2024-01-29

下面是我的程序的运行方法,出现了由于出现段错误导致程序终止时未调用注册的处理程序的情况。

是否存在当发生段错误时可以终止注册的处理程序而无需调用的情况?

  1. 初始化程序A时,通过signal()函数注册处理程序。( SIGSEGV, SIGABRT, SIGFPE, SIGTERM )
  2. fork() -> waitpid() 程序 A 在程序 B 中
  3. Aging
  4. A 程序中由于未知原因发生段错误
  5. B 程序的 waitpid 状态被传递给段错误(11)。
  6. A 程序中注册的处理程序不被调用并结束。

格式良好、定义良好的 C++ 应用程序永远不会导致段错误。

段错误是未定义行为的结果;但是,当发生未定义的行为时,根据定义,您不能期望任何特定的结果或行为。您不希望由于未定义的行为而发生段错误,即使发生,您也不能期望SIGSEGV处理程序将产生任何预期的结果。

可以给出的示例数量没有限制。例如,段错误处理程序尝试删除在段错误之前创建的临时文件。不幸的是,未定义的行为除了导致段错误之外,还导致存储临时文件名称的缓冲区损坏。段错误处理程序失败。或者,更好的是,损坏的文件名缓冲区恰好与另一个文件的名称匹配,并且它被错误地删除了。如果您以 root 身份运行,并且损坏的文件名缓冲区偶然最终包含“/bin/bash”,那么您刚刚将您的计算机变成了无法启动的砖块。

许多其他的可能性也可能发生,仅限于一个人的想象力。您没有描述您的 sigsegv 处理程序尝试执行的操作,但这并不重要。无论它尝试做什么,都不能保证始终有效。为时已晚,当它被调用时,未定义的行为已经发生了,从那时起,您就不会期望发生任何事情。

因此,无论段错误处理程序尝试做什么,它都无法保证它能够完成其任务。当段错误处理程序被调用时,程序其余部分的状态及其数据是未定义和未指定的。

这就是为什么当出现导致段错误的错误时,正确的处理方法是找出段错误的原因,找到错误并修复它。任何通过捕获信号和清理来补救这种情况的尝试充其量只是一次冒险,并不能保证总是成功。

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

当发生段错误时不调用信号处理程序? 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 在 React Native 中存储来自 json api 的大数据集合的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要制作一个具有离线功能的应用程序 可以从 json api 获取大约 10 000 个对象 估计 10mb 数据 并将它们存储在本地 以便在
  • Eloquent:带时间戳的默认值无效

    这是我的迁移架构 public function up Schema create objects function Blueprint table table gt increments id table gt timestamp tim
  • UICollectionView补充视图如何正确插入或删除

    简短的问题 有没有办法添加和删除补充视图 例如单元格和部分performBatchUpdates 块类似于insertItemsAtIndexPaths deleteItemsAtIndexPaths 甚至reloadItemsAtInde
  • 为什么 Oracle 不告诉你哪个表或视图不存在?

    如果您使用过 Oracle 您可能会收到有用的消息 ORA 00942 表或视图不存在 该消息不包含丢失对象的名称是否存在合法的技术原因 关于这是出于安全原因的争论听起来像是美国运输安全管理局 TSA 精心策划的 如果我是攻击者 我就会知道
  • 如何使用 d.items() 更改 for 循环中的所有字典键?

    我需要一些帮助来理解为什么这段代码没有按预期工作 如果想更改字典的键但保留值 他 她可以使用 d new key d pop old key 我想修改所有键 并将值保留在适当的位置 但下面的代码会跳过某些行 col2 保持不变 是因为字典是
  • 为什么管道的容量有限?

    我读到管道需要有有限的容量 但我不明白为什么 如果进程无限制地写入管道会发生什么 这是由于缓冲 管道并不 神奇 管道并不能确保所有进程都按步调一致地处理每个单独的字节或字符 相反 管道缓冲进程间输出 然后传递缓冲区 这个缓冲区大小限制就是您
  • 带滑动菜单的 Sherlock 操作栏

    我正在创建一个扩展 SherlockMapActivity 的视图和活动 并使用 SlidingMenu 库使我的主视图像 Google 一样滚动 我已经通过 XML 添加了 SlidingMenu 并且我的视图滚动完美地显示了隐藏菜单 但
  • 如何停止matlabplot3缩放

    我想使用绘制摆 改变位置 plot3功能 不幸的是 当我的点在循环中改变位置并再次绘制时 3d 图的比例也在变化 因此 x 轴取决于位置变化 取决于点的位置 它可以从 1 到 1 5 或从 1 到 3 并且 y 也会改变 只有 z 表示相同
  • 如何检测 Ag-grid 中的细胞模糊(失焦)事件

    我需要检测网格单元何时在农业网格中失去焦点 我已经检查了文档中可用的 API 但没有找到任何类似于单元格模糊的内容 https www ag grid com javascript grid events https www ag grid
  • SBT 在所有子项目之后运行任务

    我想编写一个在所有子项目任务完成后运行的任务 例如 如果我这样做 sbt a b然后在所有子项目上完成任务 a 后 我想执行任务 b 我不想对每个项目都做 a b 那可能吗 事实上 我会直接修改build sbt 我不一定必须在命令行中指定
  • 如何在 Excel 2007 中执行两个二进制数的异或计算

    我想对两个二进制数执行异或计算 例如 在工作表 1 上 Range A1 10101010 Range A2 11100010 现在我需要对A1 A2结果进行异或运算得到A3 我尝试了不同的公式的两个执行异或计算 例如 A1 A2 BITX
  • 使用 python 在不同的 virtualenv 中运行子进程

    假设我在 2 个不同的虚拟环境中安装了 2 个不同版本的应用程序 myapp v1 0 和 myapp v2 0 现在我想对它们进行比较 比较是用 python 本身编写的 最好的方法是什么 假设我可以单独运行它们并写入一个输出文件 以便稍
  • Django 按月/按季度对 Date Field() 数据进行分组

    我有一个 django 模型 其中包含日期字段 属性 class Table date models DateField value models FloatField 我正在编写一个视图 按周 月 季度和年份对这些数据进行分组 我已经硬编
  • 接口隔离原则只是单一职责原则的替代品吗?

    接口隔离原则只是单一责任原则的替代品吗 我认为如果我的类满足 SRP 则无需提取多个接口 因此 ISP 看起来像是解决方案 以防我们因某种原因必须破坏 SRP 我对吗 不 以一个类为例 该类的职责是保存数据 例如硬盘 将类分为读部分和写部分
  • @JvmDefault 以及如何添加编译器选项

    我需要做一个default voidKotlin 接口中的方法 我遇到了一个问题 有一个提示说的用法 JvmDefault只允许与 Xjvm default option 我需要在哪里写这个Xjvm default Target Annot
  • 从Unity3D代码启动android服务

    在我的 Android Unity3D 应用程序中 我需要启动一个服务 该服务将在后台运行 我不知道我该怎么做 方法启动服务 必须在活动上调用 但我不知道如何将当前的统一活动从统一脚本传递到我的 android 插件 我还没有找到任何方法以
  • 如何在ggplot中为facet_grid标签包装文本

    我一直在寻找如何换行文本 似乎应该有一种方法可以使用 labeller label wrap gen 3 但我不断收到错误 边距错误 vars 边距 未使用的参数 边距 这是我的代码的一部分 simpson by protected sta
  • 如何使用扩展方法将附加数据与现有对象相关联?

    自 NET Framework 3 5 以来 开发人员已经能够添加可从任何对象类型的实例调用的扩展方法 然而 扩展属性尚未在 C 中实现 与扩展方法不同 扩展属性将涉及为各个对象存储一些额外的状态信息 然而 即使对于扩展方法 在某些编程场景
  • gcc 不接受具有通过嵌套模板化 using 子句定义的非类型模板参数的成员的外线定义

    标题看起来很复杂 但我们的测试用例实际上是真实案例的最小示例 我们有一些代码想要根据模板参数选择方法的实现 我们在清理过程中定义了条件enable if t使用 using 子句 并且下一步想要将定义排除在外 这产生了以下代码 includ
  • 当发生段错误时不调用信号处理程序?

    下面是我的程序的运行方法 出现了由于出现段错误导致程序终止时未调用注册的处理程序的情况 是否存在当发生段错误时可以终止注册的处理程序而无需调用的情况 初始化程序A时 通过signal 函数注册处理程序 SIGSEGV SIGABRT SIG