无法处理的 POSIX 信号的返回代码

2024-03-07

This is regarding the application that runs on POSIX (Linux) environment. Most signals (e.g. Ctrl+C - signal 2, SIGINT), and few others are handled. When that is done the exit() system call is called from the handler with a desirable exit code.

但是,有一些信号无法处理,例如 Signal 9 和 Signal 15。

不幸的是,如果信号 9 或 15 是终止的原因,则启动给定应用程序的父进程(外部脚本)需要了解并清理一些内容。

是否有一个预定义的退出代码可以被父进程接收以了解上述内容?

启动应用程序的脚本是 bash_script。应用程序本身是用 C 语言编写的。


返回状态来自wait() or waitpid() http://pubs.opengroup.org/onlinepubs/9699919799/functions/waitpid.html对您需要的信息进行编码。

POSIX 宏是:

  • WIFEXITED(status)如果孩子通过以下方式退出,则返回 trueexit()或其亲属之一。
  • WEXITSTATUS(status)告诉您退出状态是什么(0..255)。
  • WIFSIGNALED(status)如果子进程因信号(任何信号)而退出,则返回 true。
  • WTERMSIG(status)返回杀死孩子的信号编号。

非标准但通用的宏WCOREDUMP(status)告诉您进程是否转储核心。您还可以判断状态是否反映进程已停止或继续(以及停止信号是什么)。

请注意,信号 15 通常是 SIGTERM,并且 SIGTERM 可以被应用程序捕获。无法捕获的信号是 SIGKILL (9) 和 SIGSTOP(Mac OS X 上为 17;各地可能不尽相同)。


那么问题是如果bash为脚本提供此信息。

答案是肯定的,但只是间接的,并不是 100% 明确的。报告的状态值bash128 + <signum>对于因信号而终止的进程<signum>,但是你无法区分以状态退出的进程130,比如说,一个被 SIGINT(又名信号 2)中断的进程。

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

无法处理的 POSIX 信号的返回代码 的相关文章

随机推荐

  • Rails 中数字的本地化

    对新帖子感到抱歉 但我的第一个帖子关注的是阿拉伯 波斯数字 但问题似乎更大 我想知道是否有人做了一个 gem 来处理 ruby rails 中数字的本地化 I18n 官方语言环境 https github com svenfuchs rai
  • Pester:无法访问父作用域变量

    我在 Pester 中有以下简单的测试 Name Tests ps1 name foo Describe Check name It should have the correct value name Should Be foo 因此 当
  • R:解压缩多个文件,每个文件都在新的子目录中或重命名

    我设法调整一些代码来解压缩许多文件 但是解压时会出现同名文件 被替换 在我的工作目录中 我有 zip 文件 我在该目录中创建了一个名为 unzip 的新文件夹 我在其中解压缩了文件 dir create paste0 path unzip
  • 将 IEEE 754 浮点转换为 MIL-STD-1750A 浮点

    我正在尝试将 IEEE 754 32 位单精度浮点值 标准 c 浮点变量 转换为无符号长变量 格式为MIL STD 1750A http www xgc com manuals mil std 1750a 1 7 pdf 我在帖子底部包含了
  • 在 Grails 中将自定义 id 生成定义为默认值的最佳方法是什么?

    我想切换我的域类以使用可变长度的 UUID 作为其 id 我不想简单地在 URL 上显示连续的 id 供人们尝试和搞乱 我编写了一个自定义版本的 Java UUID 方法来允许可变长度 这样我就可以为不会变大的模型使用更短的 id 我发现这
  • 两个数组相加/求和

    我遇到了一个纯粹假设的问题 如果我找到正确的 linq 方法 感觉它有一个简单的解决方案 我有两个整数数组 我知道它们的大小相同 我想创建相同大小的第三个数组 其中第三个数组中的元素是相应位置的前两个数组中的元素之和 下面是一个应该显示我想
  • NetSuite / Suitescript - 为什么此验证字段脚本会进入无限循环?

    我的脚本进入无限循环 我不知道为什么 我在验证字段上运行此命令 并且如果存在具有相同参考号的另一个供应商帐单 则会阻止对该字段进行更改 从而强制用户将 参考号 更改为唯一 这是我的代码 function validateField type
  • 如何查看 C# 数组在内存中的分布情况?

    我想看看 C 数组是如何存放在计算机内存中的 我想看到的主要是两列 第一列是地址 第二列是数组元素 是否可以 我想从一维数组开始 但然后我想观察多维数组是如何放置的 Question 我如何通过 Visual Studio 看到它 您可以使
  • 运行时错误:事件循环正在运行

    当我调用该函数时出现以下错误send message Exception in thread Thread 1 Traceback most recent call last File usr lib python3 4 threading
  • Camel SFTP - 无法将目录更改为“/”

    我需要通过 SFTP 连接到服务器 但收到此错误 INFO org apache camel component file remote SftpOperations connect Connected to sftp myserver c
  • 从 Powershell 中的对象数组中删除项目

    我有一个数组对象 a 它返回如下所示的输出 通过执行 a 0 Name 我可以访问每个 Name 条目 a 0 Available 我可以访问其相应的可用空间 我有另一个数组 b 包含一些名称 例如 b 返回两个名称 sandeep agg
  • 解释 - 不涉及反射

    我有一个非常简单的问题 这不仅适用于 Spray json 而且我读过 argonaut 和 circe 的类似声明 所以请赐教 在 Spray json 中 我遇到这样的声明 There is no reflection involved
  • 如何在没有 ID 的情况下在 Prisma 中更新插入新记录?

    我正在使用 Prisma https www prisma io https www prisma io 作为 ORM 我想在存储数据时检查重复项 如果不存在 则创建一条新记录 我想我可以使用 Prisma 提供的 upsert 方法来做到
  • underscore.js 中的 chain 函数是否创建了一个 monad?

    In the chain文档 http underscorejs org chaining你发现 Calling chain在包装对象上将导致所有未来的方法调用 也返回包装的对象 当你完成后 计算 使用value检索最终值 也是如此chai
  • OpenAPI中如何定义全局参数?

    我正在准备我的 API 文档 方法是手工完成 而不是自动生成 我有应该发送到所有 API 的标头 但不知道是否可以为整个 API 全局定义参数 其中一些标头是静态的 有些必须在调用 API 时设置 但它们在所有 API 中都是相同的 我不想
  • 创建字典时使用语言模型文件

    我创建了一个语音到文本识别应用程序 为此 我使用 CMULanguage 工具开发了一本字典 为了为我的项目创建字典 我在组和文件中的语言文件夹中添加了两个文件 这些文件的扩展名是 lm 语言模型 和 dic 当我上传我的语料库时 CMUL
  • Spring Data JPA JpaRepository.save(entity) 不返回数据库默认值

    我有一个相当简单的问题 在单个事务中 我的代码如下所示 MyClass c new MyClass c setPropA A c myClassRepository save c c setPropC C 我的实体如下所示 Entity T
  • 如何通过 Linq 查询 MongoDB 中的 BsonExtraElements

    我使用 mongodb BsonExtraElements 功能来扩展我的类的一些动态数据 但不幸的是我无法通过 mongodb C 驱动程序创建查询 这是我的模型类 public class MongoProductEntity publ
  • 无法检索 ApplicationUser 的元数据。 - VS13

    当我选择使用实体框架生成带有视图的 MVC5 控制器时 我收到以下错误 无法检索 ApplicationUser 的元数据 不支持每种类型的多个对象集 对象集 ApplicationUsers 和 Users 都可以包含 Applicati
  • 无法处理的 POSIX 信号的返回代码

    This is regarding the application that runs on POSIX Linux environment Most signals e g Ctrl C signal 2 SIGINT and few o