分段错误处理程序中的分段错误

2024-01-22

Linux 下分段故障处理程序中发生的分段故障是否有一些定义的行为? 是否会再次调用同一个处理程序?如果是,在所有平台上是否已定义等等。 谢谢。


答案取决于您如何安装信号处理程序。如果您使用已弃用的安装信号处理程序signal() http://linux.die.net/man/2/signal调用,那么它会将信号处理程序重置为默认处理程序,或者在调用信号处理程序之前阻止正在处理的信号。如果它阻塞了信号,它将在信号处理程序返回后解除阻塞。

如果你使用sigaction() http://linux.die.net/man/2/sigaction,您可以控制在调用信号处理程序时阻止哪些信号。如果这样指定,有可能导致无限递归。

可以实现一个安全的包装器sigaction()其 API 类似于signal():

sighandler_t safe_signal (int sig, sighandler_t h) {
    struct sigaction sa;
    struct sigaction osa;
    sa.sa_handler = h;
    sigemptyset(&sa.sa_mask);
    sa.sa_flags = 0;
    if (sigaction(sig, &sa, &osa) < 0) {
        return SIG_ERR;
    }
    return osa.sa_handler;
}

这会在信号处理程序调用期间阻塞所有信号,信号处理程序返回后会恢复。

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

分段错误处理程序中的分段错误 的相关文章

  • 无需 root 访问权限即可安装 zsh? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有可能 以及如何 我确实需要在几台具有 ssh 访问权限 但没有 root 访问权限 的远程计算机上使用此功能 下载 zsh wget O zsh t
  • 将node.js +expressjs应用程序的NODE_ENV设置为ubuntu下的守护进程

    我按照这些说明让守护进程正常工作 http kevin vanzonneveld net techblog article run nodejs as a service on ubuntu karmic http kevin vanzon
  • 用于读取文件的 Bash 脚本

    不知道为什么最后一行没有从脚本中删除 bin bash FILENAME 1 while read line do cut d f2 echo line done lt FILENAME cat file 1 test 2 test 3 t
  • 在 Linux 控制台中返回一行?

    我知道我可以返回该行并用以下内容覆盖其内容 r 现在我怎样才能进入上一行来改变它呢 或者有没有办法打印到控制台窗口中的特定光标位置 我的目标是使用 PHP 创建一些自刷新的多行控制台应用程序 Use ANSI 转义码 http en wik
  • 如何反汇编、修改然后重新组装 Linux 可执行文件?

    无论如何 这可以做到吗 我使用过 objdump 但它不会产生我所知道的任何汇编器都可以接受的汇编输出 我希望能够更改可执行文件中的指令 然后对其进行测试 我认为没有任何可靠的方法可以做到这一点 机器代码格式非常复杂 比汇编文件还要复杂 实
  • 在非实时操作系统/内核上执行接近实时任务的最佳方法是什么?

    在一台 GNU Linux 机器上 如果想要执行 实时 亚毫秒级时间关键 任务 您几乎总是必须经历漫长 复杂且容易出现问题的内核补丁过程 以提供足够的支持 1 http en wikipedia org wiki RTLinux Backg
  • 提高mysql导入速度[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一个很大的数据库22GB 我曾经用过进行备份mysqldumpgzip 格式的命令 当我提取 gz 文件时 它会生成 sql文件的
  • 为什么默认情况下不启用 arp 忽略/通告 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个需要经验才能回答的具体问题 为什么 arp ignore arp announce 在 Linux 安装 例如 debian 上默认不启用 有
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second
  • 为什么 call_usermodehelper 大多数时候都会失败?

    从内核模块中 我尝试使用 call usermodehelper 函数来执行可执行文件 sha1 该可执行文件将文件作为参数并将文件的 SHA1 哈希和写入另一个文件 名为输出 可执行文件完美运行 int result 1 name hom
  • 在用户程序中使用 或在驱动程序模块代码中使用 ...这有关系吗?

    我正在开发一个设备驱动程序模块和关联的用户库来处理ioctl 来电 该库获取相关信息并将其放入一个结构中 该结构被传递到驱动程序模块中并在那里解压 然后进行处理 我省略了很多步骤 但这就是总体思路 一些数据通过结构体传递ioctl is u
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • C 指针混乱

    我想在内存中存储一 个字符串并稍后读取它 gt desc constant gt base id char malloc 200 sprintf gt desc constant gt base id f 1 printf gt s n g
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • 如何使用 VSCode 调试 Linux 核心转储?

    我故意从我使用 VSCode 编写的 C 应用程序生成核心转储 我不知道如何调试核心转储 有没有人愿意分享这方面的经验 更新 我相信我现在已经可以使用了 我为核心文件创建了第二个调试配置 我需要添加指向生成的转储文件的 coreDumpPa
  • Unix 中的访问时间是多少

    我想知道访问时间是多少 我在网上搜索但得到了相同的定义 读 被改变 我知道与touch我们可以改变它 谁能用一个例子来解释一下它是如何改变的 有没有办法在unix中获取创建日期 时间 stat结构 The stat 2 结构跟踪所有文件日期
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • 如何在 Linux 中向热敏打印机发送 ESC/POS 命令

    我正在尝试在热敏打印机上发送 ESC POS 命令 但每当我发送它们时 热敏打印机都会将它们打印为文本 而不是作为命令执行它们 我在 prn 文件中编写这些命令 每当我执行 lp 命令来打印文件时 这些 prn 文件也会被打印 但作为文本
  • 有没有办法提高linux管道的性能?

    我正在尝试使用 64 位将超高速数据从一个应用程序传输到另一个应用程序CentOS http en wikipedia org wiki CentOS6 我使用以下方法进行了基准测试dd发现阻碍我的是管道而不是程序中的算法 我的目标是达到
  • 虚拟内存澄清——大连续内存的分配

    我有一个应用程序 我必须在 Windows 上分配 使用运算符 new 相当大的内存空间 数百 MB 该应用程序是 32 位 我们现在不使用 64 位 即使在 64 位系统上也是如此 我启用了 LARGEADDRESSAWARE 链接器选项

随机推荐

  • 无法对 DependencyProperty 进行数据绑定

    我有一个带有 DependencyProperty 的 UserControl 我使用数据绑定表达式在主机窗口中设置它的值 但是 它并没有按预期工作 用户控件的代码隐藏片段 public class ViewBase UserControl
  • 带有 JSON 数据的 DataTable

    我正在尝试使用 DataTable 创建一个表 但很难让 DataTable 使用 JSON 对象加载 function getData var request new XMLHttpRequest var json link to my
  • MPMoviePlayerController 与启动 UIWebView 来流电影的优缺点

    我有一位客户拥有 Flash 格式的网络视频内容 我的任务是帮助他们在 iPhone 应用程序中展示视频 我意识到第一步是将这些视频转换为适合 iPhone 的 Quicktime 格式 然后我必须帮助客户弄清楚如何或在哪里托管这些文件 如
  • python列表中的索引错误

    B l append l i A B l 这里是一个列表 我试图向其中附加更多值以使其充当数组 但它仍然给我错误 如列表索引超出范围 如何摆脱它 您的代码存在很多问题 1 the append method 不返回任何内容 所以这样写是没有
  • SQL-如何将 YYYYMM 数字转换为日期

    所以我对 SQL 还很陌生 我有一个充满数字的列 以 YYYYMM 格式列出年份和月份 即 2016 年 7 月的 201607 我想知道是否可以在 SQL 中将其转换为正确的日期格式 我已经做了相当多的研究 并且看到了很多关于将 YYYY
  • 如何发送 zip 文件而不在物理位置创建它?

    我想发送带有 zip 文件附件的电子邮件 我可以发送 pdf 文件 而无需使用 ByteArrayOutputStream 将它们保存在物理位置 但是当我尝试压缩这些文件并发送它时它不起作用 它给出了非法附件的异常 下面是我编写的用于创建
  • 从 iOS 中的离屏 OpenGL 像素缓冲区读取像素 (OopenGL-ES)

    我想从屏幕外 不受 CAEAGLLayer 支持 帧缓冲区读取像素 我创建缓冲区的代码如下所示 glGenFramebuffersOES 1 storeFramebuffer glGenRenderbuffersOES 1 storeRen
  • Woocommerce 订单数量的倍数

    我试图将 woocommerce 限制为仅以 5 10 或 15 的固定数量进行销售 下面的代码片段 我在这个论坛上找到的 允许我将最小数量设置为 5 但我想知道是否有人可以建议是否可以将其修改为允许 5 10 或 15 我感谢您提供的任何
  • 如何找到文本光标的全局位置?

    我想执行一个QMenu http qt nokia com doc 4 0 qmenu html文本光标位置处的对象QPlainTextEdit http doc trolltech com main snapshot qplaintext
  • 你最喜欢的 C++ 编码风格习语是什么 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 use_library('django','1.2')

    我正在学习在 Google App Engine 中进行开发 这是教程中的代码之一 http code google com appengine docs python gettingstarted usingwebapp html htt
  • 如何防止在 twitter bootstrap typeahead 插件中按 Enter 键提交

    我有一个输入文本 我应用它的预输入插件来建议项目 但是当我在输入文本上按 Enter 键时 它会提交表单 如何使用 twitter bootstrap typeahead 插件阻止表单提交 您可以通过向特定输入添加 ID 并简单地删除 En
  • git flow 发布选定的功能

    我正在尝试向我的团队介绍 Git 流程 我们是一个相当小的团队 而且非常敏捷 我们希望每天发布一次 这意味着我们测试当天所有更改的时间有限 业务团队希望能够控制正在发布的功能 尽管这并不理想 Git 流程似乎不能很好地适应这一点 从开发中删
  • 在 Android 中调整图片大小同时仍保持质量

    我想将图像文件大小减小到 100 KB 以下 同时保持图像质量 就像 Whatsapp 和 Facebook 所做的那样 我尝试了 stackoverflow 上几乎所有可用的 android 图像压缩代码 但这对我不起作用 现在我正在关注
  • C++14 中的递归 lambda 函数 [重复]

    这个问题在这里已经有答案了 在 C 11 中编写递归 lambda 函数有一个经常重复的 技巧 如下所示 std function
  • java.sql.Date 如何处理负日期?

    我遇到过这样的情况 当从数据库读取日期时 Java 运行时返回某种 反转 毫秒值 在java sql Date 毫秒值与天数大致相同 但从 0 年开始倒推 只需重新启动 Java 运行时即可解决该问题 但是 我发现 Java 几乎可以正确地
  • 如何在 Three.js 中实现 ShaderToy 着色器?

    寻找有关如何在 Threejs 中重新创建 ShaderToy 参数 iGlobalTime iChannel 等的信息 我知道 iGlobalTime 是自着色器启动以来经过的时间 我认为 iChannel 的东西是用于从纹理中提取 RG
  • 如何按最小增量更改 double

    是不是有什么东西坏了或者我不明白发生了什么 static String getRealBinary double val long tmp Double doubleToLongBits val StringBuilder sb new S
  • 为什么在 Scala 中使用 def 和 val ,反之亦然

    我知道这已经在其他帖子中讨论过 并且我了解使用之间的基本区别def and val def用于定义方法并且val以获得不可变的引用 我想通过问这个问题来完成的是了解是否还有更多的事情可以做def 它可以与 a 互换使用吗val 最近我尝试了
  • 分段错误处理程序中的分段错误

    Linux 下分段故障处理程序中发生的分段故障是否有一些定义的行为 是否会再次调用同一个处理程序 如果是 在所有平台上是否已定义等等 谢谢 答案取决于您如何安装信号处理程序 如果您使用已弃用的安装信号处理程序signal http linu