python - 如何检测 os.system 的内存限制

标签 python memory-management

我目前正在使用 os.fork 和 os.system 命令设置和运行一些命令。我通过 resource.setrlimit 设置了时间和内存限制,这似乎工作正常。然而,由于内存上限,每个程序都有自己的崩溃方式——python 程序会抛出 MemoryError,c++ 程序可能有错误的分配,等等。

我想知道的是我如何检测 os.system 命令何时因内存限制限制(假设超时或其他某种完成方式)而完成执行。我尝试了以下但没有成功:

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

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

最佳答案

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

在 Windows 上,system() 和 wait() 似乎总是返回 0。

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

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

关于python - 如何检测 os.system 的内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7986036/

相关文章:

c++ - double 组和堆损坏

iphone - 下载大视频会出现内存警告

python - Scrapy正在爬取,但没有输出

python - Google App Engine 突然停止工作,出现错误 'you are likely missing the Python "PIL"module'

c++ - 返回静态局部变量作为引用

android - 未释放的 Activity 内存

cocoa - 在不释放对象的情况下删除ObjectAtIndex

python - 在 Python 中编译 C 代码的问题

Python 显示图像时出错

python - 使用列表路径写入字典