Python 2.7 在执行后不保留其 ulimits?

标签 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

最佳答案

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

关于Python 2.7 在执行后不保留其 ulimits?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25852891/

相关文章:

macos - Dockerpy 执行命令到 cat 日志文件

python - 没有检查约束的 Alembic 自动生成迁移

python - 复制列表中的项目

python - 使用 pkg_resources 获取 python 模块完整版本

结合 fork、fifo 和 execlp?

c - 将字符串作为标准输入传递给可执行文件

php - exec 命令未在 Linux 主机上运行

python - OpenCV Python调整大小图像

python - 创建的目录具有错误的权限(被锁定)

python-2.7 - 如何在 jupyter notebook (v5.2.2) 中隐藏/删除页面底部的演示工具栏?