如果是,对哪种操作系统、外壳或什么?

请考虑以下java程序(我采用java只是作为一个例子,任何语言将是很好的这个问题,它更多的是操作系统):

public class ExitCode {
    public static void main(String args[]) {
        System.exit(Integer.parseInt(args[0]));
    }
}

运行在Linux和庆典,它返回总值不平等的255,例如(echo $? 打印出口码的先前执行的命令)

> java ExitCode 2; echo $?
2

> java ExitCode 128; echo $?
128

> java ExitCode 255; echo $?
255

> java ExitCode 256; echo $?
0

> java ExitCode 65536; echo $?
0

编辑:所(只,迄今为止)回答下面充分解释上发生了什么unix,其情形并.我仍然不知道其他有关的操作系统。

有帮助吗?

解决方案

在Unix和衍生品上不可能。返回的退出状态信息由两个8位字段组成,一个包含退出状态,另一个包含有关死因的信息(0表示程序控制下有序退出,其他值表示信号杀死它,并指示是否一个核心被倾倒了。)

其他提示

在现代Windows上,操作系统本身和默认控制台shell( CMD.EXE )在至少整个32位有符号整数范围内接受并显示退出代码。在 CMD.EXE 中运行上面的示例,会给出您要求的退出代码:

> java ExitCode 2
> echo %errorlevel%
2

> java ExitCode 128
> echo %errorlevel%
128

> java ExitCode 255
> echo %errorlevel%
255

> java ExitCode 256
> echo %errorlevel%
256

> java ExitCode 65536
> echo %errorlevel%
65536

Windows并不真正具有Unix信号的概念,也没有尝试劫持退出代码来添加额外信息,所以只要你的shell(或任何程序最终读取退出代码)不做要么,你应该找回你返回的退出代码。幸运的是,使用Microsoft的C运行时(包括使用MS Visual C ++编译的所有程序)的程序保留了退出代码和退出进程。

窗户有更多的出口码,超过14 000人。(我敢肯定你经常看到了一些他们自己的画面)。

来这里:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top