一个exec后Python 2.7没有保留其ulim?

时间:2014-09-15 16:46:14

标签: python python-2.7 exec ulimit

我不明白为什么Python在执行exec时没有保留其ulimits。我创建了这个小测试用例:

import os
import resource

print "Heap limit:", resource.getrlimit(resource.RLIMIT_DATA)
resource.setrlimit(resource.RLIMIT_DATA, (100, -1))
print "Heap limit:", resource.getrlimit(resource.RLIMIT_DATA)
os.execve("/bin/ls", ["/bin/ls","/etc/passwd"], dict())

我的Ubuntu 14.04(Python 2.7.6)中的输出是:

Heap limit: (-1, -1)
Heap limit: (100, -1)
/etc/passwd

当然,您无法使用该数量的虚拟内存执行ls:

$ sh -c "ulimit -v 100; ls /etc/passwd"
Killed

1 个答案:

答案 0 :(得分:3)

问题在于RLIMIT_DATA is deprecated。现在我们应该使用RLIMIT_AS。如果您更改脚本以使用它,它将按预期工作。