当assert()失败时,程序退出代码是什么?

Mat*_*ner 22 c linux assert

assert()呼叫失败时,使用的退出代码是什么,它在哪里记录?

pax*_*blo 24

c99标准声明assert调用abortabort东西说明返回代码:

通过函数调用raise(SIGABRT)将实现定义的状态不成功终止的形式返回到主机环境.

这里记录了c99标准的7.2.1.1(断言)和7.20.4.1(中止).

许多UNIX系统将返回128加上信号编号(SIGABRT是信号编号6),因此您可能得到134.无论您获得什么,都应该由C实现记录.

例如,请参阅此处获取gcc.虽然它对返回调用环境的内容非常沉默.从这里的具体部分:

一些选择是由库和操作系统(或编译独立环境时的其他环境)做出的; 有关详细信息,请参阅其文档.

在这里:

大多数这些点的行为取决于C库的实现,并且不是由GCC本身定义的.

那么,glibc的DOCO 这里在程序终止(特别是退出状态位).它提到了惯例,但没有确定的规则.