我在Linux上通过Python脚本运行Java程序,但程序崩溃而没有输出任何错误消息。执行Java程序的os.system命令输出错误代码24.这是什么意思?
答案 0 :(得分:5)
在我的系统上,这可以在/usr/include/asm-generic/errno-base.h
:
#define EMFILE 24 /* Too many open files */
这意味着您的进程已超出C /系统文件描述符的限制。通常限制在1024左右,可能存在一些错误,即某些文件描述符未被关闭。 (在Python或Java代码中,这对你来说似乎不太可能......)。
我刚刚意识到你可能正在谈论Java程序的返回代码。这是特定于程序的,您需要检查程序的文档或代码。
答案 1 :(得分:2)
来自http://docs.python.org/library/os.html#os.system:
在Unix上,返回值是退出 编码的进程的状态 为wait()指定的格式。注意 POSIX没有指定的含义 C系统的返回值() 函数,所以返回值 Python函数依赖于系统。
幸运的是,os
模块中提供了用于剖析返回状态的C宏(从here开始)
我在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模块,以便捕获stdout / stderror)
<强>更新强>
有人发布了它然后消失了,但是信号24可能是SIGXCPU(超出了CPU时间限制)