创建核心转储时设置退出状态
Posted
技术标签:
【中文标题】创建核心转储时设置退出状态【英文标题】:Setting exit status when creating core dump 【发布时间】:2010-04-09 13:38:34 【问题描述】:例如,调用exit(100)
会以状态100 退出应用程序,调用raise(SIGABRT)
会在创建核心转储时以状态134 中止应用程序。但是,如果我想要状态为 100 或任何其他任意值的核心转储怎么办。我怎样才能做到这一点 ?我知道有几个信号会触发核心转储,但它们似乎具有固定的退出状态。
【问题讨论】:
你为什么要这样做?关键是要能够判断它是否以倾销核心退出。大多数关注退出状态的程序应该只区分零(成功)和非零(失败),但有些程序可能想知道它在转储核心时是否失败,在这种情况下,这个特定的退出代码很有用。 . 并强制执行一些其他退出代码会欺骗依赖它的程序。 是的,但这不适用于已发布的软件,仅用于内部调试,以便能够更轻松地对转储进行分类,而无需使用外部工具实际检查它。 【参考方案1】:看起来134
等于(128+6)
和euqals 等于((1<<7) | 6)
(其中#define SIGABRT 6
)
巧合?
【讨论】:
并非巧合,请参阅***.com/questions/1101957/1104641#1104641 和其他人。【参考方案2】:好吧,我想你可以fork()
让父母打电话给_exit(100)
,让孩子打电话给abort()
...
我同意 cmets 的说法,但这是个坏主意。
【讨论】:
以上是关于创建核心转储时设置退出状态的主要内容,如果未能解决你的问题,请参考以下文章