我的问题更多的是理论而不是实际,我找到了更多的答案来解释我们如何而不是为什么subprocess.Popen
我们应该在通话中使用列表。
例如众所周知:
Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> cmd = subprocess.Popen(["python", "-V"], stdout=subprocess.PIPE)
Python 2.7.10
然后我在 UNIX 中乱搞,发现了一些有趣的东西:
mvarge@ubuntu:~$ strace -f python -V 2>&1
execve("/usr/bin/python", ["python", "-V"], [/* 29 vars */]) = 0
可能两者execve
和使用的列表模型subprocess
都在某种程度上相关,但是任何人都可以对此给出一个很好的解释吗?
提前致谢。