Linux上的错误代码24是什么意思?
我在Linux上通过一个Python脚本运行一个Java程序,但这个程序崩溃了,没输出任何错误信息。执行Java程序的os.system命令返回了一个错误代码24。这是什么意思呢?
2 个回答
2
来自 http://docs.python.org/library/os.html#os.system 的内容:
在Unix系统中,返回值是进程的退出状态,这个状态是按照wait()函数规定的格式编码的。需要注意的是,POSIX并没有规定C语言的system()函数返回值的具体含义,所以Python函数的返回值是依赖于系统的。
幸运的是,用来解析返回状态的C语言宏在 os
模块中可以找到(从这里开始)。
我在amd64/Linux上运行了这些:
>>> import os
>>> os.WIFEXITED(24) #Return True if the process exited using the exit(2) system call
False
>>> os.WIFSIGNALED(24) #Return True if the process exited due to a signal
True
>>> os.WTERMSIG(24) #Return the signal which caused the process to exit
24
根据http://linux.die.net/man/7/signal,我认为信号24可能是SIGTSTP(有人通过按CTRL+Z停止了进程)。你是在什么平台/架构上运行的呢?
(往后我建议使用subprocess模块,这样你可以捕获标准输出和标准错误信息)
更新
之前有人发布过这个信息,但后来消失了,不过信号24很可能是SIGXCPU(CPU时间限制超出)。
7
在我的系统中,这个文件可以在 /usr/include/asm-generic/errno-base.h
找到:
#define EMFILE 24 /* Too many open files */
这意味着你的程序打开的文件数量超过了系统的限制。一般来说,这个限制大约是1024个文件描述符。可能存在一个问题,就是有些文件描述符没有被关闭。(在Python或Java代码中,这种情况不太可能,因为这些语言会自动处理这个问题……)
更新0
我刚意识到你可能是在说Java程序的返回代码。这个返回代码是特定于程序的,你需要查看该程序的文档或代码来了解更多信息。