Win32 Exit code
来源:互联网 发布:linux ant安装路径 编辑:程序博客网 时间:2024/06/06 01:11
对于进程或者线程而言,在结束时都有一个exit code。如果我们在windows的cmd中执行完一个程序后,那么我们可以通过cmd的%ERRORLEVEL%变量来获得程序的exit code。而在Linux的shell中,我们可以通过$?变量来获得。
进程的exit code其实就是主线程的exit code,因为一个进程至少含有一个线程,而第一个被创建的线程称之为主线程(main thread),其他线程称之为辅助线程(worker thread)。
在win32上,对于C/C++程序而言,入口通常是main,而该函数的return code就是主线程,即进程的exit code了。同理,而对于线程而言,我们的线程函数的return code就是该线程的exit code了。
win32上一个进程的开始入口是由windows的BaseProcessStart开始的,最后才调用我们的main函数。
这里我们可以看到调用了函数ExitThread,这里是一个线程结束的地方,也就是主线程,如果我们的main函数没有抛出什么未处理的异常的话,那么就会调用该函数。但是如果我们有未处理的异常,那么最终会调用ExitProcess。而通常我们会在一个程序出现异常情况下,弹出一个系统对话框要求我们终止或者调试该程序,就是在处理未处理的异常时候发生的。这里是在UnhandledExceptionFilterGetExeptionInfomation中弹出的对话框。
我们看到对于exit code可能有2种可能
- 要么是main函数正常返回时的return code
- 要么是Exception code(详见MSDN中EXCEPTION_RECORD)
对于线程的exit code也是一样。以下是线程真正的入口
对于以下程序,有一个除0错误,win32中对应的Exception code为EXCEPTION_INT_DIVIDE_BY_ZERO = 0xC000 0094
在cmd下执行该程序,获得返回码为-1073741676,这个值正好是EXCEPTION_INT_DIVIDE_BY_ZERO 的有符号表示。
但是在shell下执行该程序,获得的返回码为127。
根据linux中exit 的man page,exit的原型为
并且返回给父进程的最终的exit code的值是 status & 0377,也就是在0-255之间
但是返回值127对于shell而言有特殊的意义——command not found。在这里有部分特殊意义退出码的列表。
进程的Exit Code最好有特殊的意义,这样我们可以通过返回码来了解一些关于进程意外结束的原因。
- Win32 Exit code
- eclipse-jee-galileo-SR2-win32中的jvm terminated.Exit code=-1错误的解决办法
- exit with code 1073740791
- exit with code 1073741571
- exit with code 1073740791
- Bourne shell exit code
- Hadoop Exit Code 含义
- Linux-shell exit code
- BibTeX return exit code
- Eclipse Exit Code=-1
- Eclipse_jvm terminated. exit code 1
- 通过T-CODE查询exit
- jvm terminated exit code 1
- jvm terminated. exit code -1
- git did not exit cleanly (exit code 128)的解决方案
- git did not exit cleanly (exit code 128)的解决方案
- Git Error(did not exit cleanly (exit code 1))
- git did not exit cleanly (exit code 1)/128
- 学习iphone - address book recorder
- iphone-file
- 中小企业IT外包服务发展
- java打印
- 动易(SF)网站服务器的安全设置
- Win32 Exit code
- 2010 年1月23日
- MIT推出面向的中的图形脚本语言sikuli
- 一个菜鸟作的一点汇编笔记
- Oracle维护常用SQL语句汇总
- colinux 0.7.5 无法启动网络的问题
- CString转换为string的做法
- C语言十六进制数据同字符串的相互转换
- SQl 中几种常用的数据字典SQL