gpt4 book ai didi

python - 不使用 shell 选项无法从 python 子进程调用 ubuntu 'ulimit'

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:33 24 4
gpt4 key购买 nike

当我尝试从子进程调用 ulimit -n 时,即

subprocess.check_output(['ulimit', '-n'])

我收到以下错误:

OSError: [Errno 2] 没有那个文件或目录

这很奇怪,因为该命令在命令行上有效。之前类似问题的回答都集中在需要以列表的形式输入命令,我已经做到了。其他答案提到别名命令可能会导致子进程出现问题,但 ulimit 不是别名。如果我使用 shell=True 选项,代码就可以工作。但我想了解原因。

最佳答案

ulimit 是一个系统调用的包装器,用于限制当前进程的资源。因为作用于当前进程,所以需要在当前进程上调用,否则没有作用。

出于这个原因,shell 将其实现为内置的,因此没有这样的二进制文件。

如果您要创建一个仅调用 ulimit 的 shell,然后终止该 shell,您将一事无成,因为随后终止了具有限制的进程。这就是为什么像 cd 这样影响当前进程的东西需要像在 shell 中那样实现。

这意味着您不能在 python 中将其称为子进程。幸运的是,python 有一个模块来包装它:https://docs.python.org/3/library/resource.html

关于python - 不使用 shell 选项无法从 python 子进程调用 ubuntu 'ulimit',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57536172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com