-4

脚本 1:

#!/usr/bin/env python
import subprocess

subprocess.call(["ulimit", "-c"], shell=True)    

输出-unlimited

脚本 2:

#!/usr/bin/env python
import subprocess

subprocess.call(["ulimit", "-c"], shell=True)    

输出-0

我知道这是一个基本问题,请耐心回答

4

3 回答 3

2

使用资源模块要容易得多,并且它允许resource.setrlimit您的子进程根本无法执行,因为它的操作将是子进程的本地操作并且不会影响 Python 父进程。

>>> import resource
>>> resource.getrlimit(resource.RLIMIT_CORE)
(0L, -1L)
于 2013-05-06T11:27:17.097 回答
2

unlimited和是不同的0输出,具有不同的含义。

unlimited是调用时的实际值ulimit,如果查看手册页,0是调用的结果,表示ulimit执行成功。

In [1]: import subprocess

In [2]: subprocess.call(["ulimit", "-c"], shell=True)
unlimited
Out[2]: 0

如果您分配给一个变量,您可以看到结果是0,但 unlimited 由您正在调用的进程输出到标准输出(而不是由调用返回)。

于 2013-05-06T11:12:11.850 回答
1

剧本是一样的。问题可能是当你打电话时

subprocess.call(["ulimit", "-c"], shell=True)

你得到2个输出。第一个是unlimited,第二个是0

尝试将输出分配给变量:

output = subprocess.call(["ulimit", "-c"], shell=True)
于 2013-05-06T11:12:22.000 回答