Linux错误代码24的含义是什么?

4

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

2个回答

7

在我的系统中,这可以在/usr/include/asm-generic/errno-base.h文件中找到:

#define EMFILE      24  /* Too many open files */

这意味着您的进程已超过C /系统文件描述符的限制。通常限制在1024左右,可能存在某些文件描述符未关闭的错误。(在Python或Java代码中,这似乎不太可能发生,因为它会为您完成...)

更新0

我刚意识到您可能正在谈论Java程序的返回代码。这是特定于程序的,您需要检查程序的文档或代码。


2
http://docs.python.org/library/os.html#os.system
在Unix上,返回值是进程退出状态,在wait()指定的格式中编码。 请注意,POSIX未指定C system()函数的返回值的含义,因此Python函数的返回值取决于系统。
幸运的是,用于解析返回状态的C宏在os模块中可用(从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时间限制)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接