如何检测内存限制操作系统

2024-04-20 15:00:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在设置和运行一些命令os.fork操作系统以及操作系统命令。我设定了时间和内存限制资源.setrlimit,而且看起来效果不错。然而,每个程序都有它自己的崩溃方式,因为内存上限——python程序抛出内存错误,c++程序可能有错误的分配,等等

我想知道的是当操作系统由于内存限制(假设超时或其他完成方式),命令已完成执行。我尝试过以下方法,但没有成功:

try:
    status = os.system(command)
except MemoryError:
    # Never actually makes it here...

编辑:我现在只关心unix系统。在


Tags: 方法内存命令程序osstatus错误方式
2条回答

http://blog.tsul.net/2008/04/ossystem-and-its-return-value.html

在windows上,system()和wait()似乎都始终返回0。在

在unix或mac上,system()将返回“一个包含其pid和退出状态指示的元组:一个16位数字,其低位字节是终止进程的信号号,其高位字节是退出状态(如果信号号为零);如果生成核心文件,则设置低位字节的高位。可用性:Macintosh、Unix。”

您应该能够查看低字节,看看信号是什么,并使用它来确定它被终止/退出的原因。在

这样的系统调用不太可能包装返回值并引发异常。在

您必须自己使用子流程模块:http://docs.python.org/library/subprocess.html#module-subprocess

然而,根据您所做的系统调用,您可能不知道它是否由于内存错误而失败,除非它明确地告诉您它失败了。在

相关问题 更多 >