我正在使用mono,我的可执行文件正常退出。
但是在执行后执行echo $?
,我得到249。
我找不到单声道返回码列表,有找个地方吗?
答案 0 :(得分:2)
我相信您的应用程序会以-7
错误代码退出。该数字为负数,因为libc
将减号附加到内核系统调用返回的所有错误代码(positive整数)。最后,bash
将-7
转换为249
到$?
。
test.sh
#!/bin/bash
exit -7
致电test.sh
bash test.sh
$?
249
答案 1 :(得分:1)
单声道返回代码:
对于void type 的主要入口点,0或-1(在posix中为255)
int type
的主要入口点的任何int值同样,对于基于异常的退出,-1是'保留'...
基于具有标准MONO_TYPE_I4(0x08)返回签名的入口点:
MonoObject *res;
res = mono_runtime_invoke (method, NULL, pa, exc);
if (!exc || !*exc)
rval = *(guint32 *)((char *)res + sizeof (MonoObject));
else
rval = -1;
mono_environment_exitcode_set (rval);
假设您没有运行程序并更正为调试器且未自行设置退出代码,则退出代码为249 / -7表示非标准退出,并且基于有限的退出点和可以退出代码的区域,我会寻找一个你没有清理的线程(即托管线程在OS-X上成为'本地'pthread或在Linux上成为__thread或......)或其他一些管理线程本机/互操作进程挂起(GPU,文件系统操作等)。
您始终可以运行应用程序“MONO_LOG_LEVEL = debug mono someapp.exe”并在关机/退出跟踪中查找。