当创建核心转储

问题描述:

例如调用exit(100)将退出与状态100的应用程序,并调用raise(SIGABRT)设置退出状态终止,状态134,同时创建一个核心转储的应用程序。但是,如果我想要状态为100的核心转储或任何其他任意值。我怎样才能做到这一点 ?我知道有触发核心转储几个信号,但他们似乎有固定的退出状态。当创建核心转储

+2

你为什么要这么做?关键在于能够判断是否退出核心竞争。大多数注意退出状态的程序应该区分零(成功)和非零(失败),但某些程序可能有兴趣知道在转储核心时它是否失败,在这种情况下,此特定的退出代码是有用的。并强制其他退出代码会欺骗依赖它的程序。 – 2010-04-09 13:50:21

+0

是的,但这不适用于已发布的软件,仅用于内部调试才能更容易地对转储进行分类,而无需使用外部工具进行实际检查。 – Zitrax 2010-04-09 14:02:02

貌似134等于(128+6)和euqals到((1<<7) | 6)(其中#define SIGABRT 6
共发生?

+1

不是巧合,请参阅http://stackoverflow.com/questions/1101957/1104641#1104641和其他人。 – ephemient 2010-04-10 02:43:56

好吧,我想你可以fork(),并有家长来电_exit(100),和孩子通话abort() ...

我的评论说,这是一个坏主意,但同意。