Linux上的错误代码24是什么意思?

时间:2010-08-30 16:15:10

标签: java python linux error-code

我在Linux上通过Python脚本运行Java程序,但程序崩溃而没有输出任何错误消息。执行Java程序的os.system命令输出错误代码24.这是什么意思?

2 个答案:

答案 0 :(得分:5)

在我的系统上,这可以在/usr/include/asm-generic/errno-base.h

中找到
#define EMFILE      24  /* Too many open files */

这意味着您的进程已超出C /系统文件描述符的限制。通常限制在1024左右,可能存在一些错误,即某些文件描述符未被关闭。 (在Python或Java代码中,这对你来说似乎不太可能......)。

Update0

我刚刚意识到你可能正在谈论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时间限制)