崩溃时退出代码
答
返回代码应用程序的退出代码将在shell变量$?。如果您的应用程序崩溃,即操作系统决定它做了一些不好的事情,并导致它终止(发送一个信号),那么这反映在退出状态$?。
下面是一个简单的功能,我使用(在bash我将其设置为可变PROMPT_COMMAND)把做的退出状态
check_exit_status()
{
local status="$?";
local msg="";
local signal="";
if [ ${status} -ne 0 ]; then
if [ $((${status} < 128)) -ne 0 ]; then
msg="exit (${status})";
else
signal="$(builtin kill -l $((${status} - 128)) 2>/dev/null)";
if [ "$signal" ]; then
msg="kill -$signal$msg";
fi;
fi;
echo "[${status} => ${msg}]" 1>&2;
fi;
return 0
}
希望你觉得它有用一些解码。
答
除0以外的任何值都表示发生错误。错误值范围从1-255。用$?
检查它们。
这有一些例外,但成功为0是* nix上的事实标准。
答
正常情况下,返回代码为0时,没有任何错误。您可以检查与$?
[email protected]:~$ badCommand badCommand: command not found [email protected]:~$ [email protected]:~$ echo $? 127 [email protected]:~$ [email protected]:~$ whoami fab [email protected]:~$ [email protected]:~$ echo $? 0 [email protected]:~$
答
似乎this is an answer你的问题。这里的代码片段表明答案取决于操作系统(包括Windows)。
+0
该博客已对公众开放:“此博客仅面向受邀读者开放http://meta-coding.blogspot.com/看起来您并未被邀请阅读此博客。如果您认为这是一个错误,您可能需要联系博客作者并请求邀请。“:-( – Pedro 2017-04-25 14:58:39
不错的例子。感谢您宣传超级简单的示例/测试。根据OP的问题,实际崩溃的应用程序是否会很好地返回非零退出代码?或者当你看到一个sig-fault或其他致命错误时返回错误代码,或者你是否需要监视std-err输出是否存在'sig-falut'等错误消息?有人知道吗? – shellter 2011-03-27 18:51:28