shell = True的python3子进程限制

时间:2019-01-10 22:59:05

标签: python-3.x

make_dir = os.path.join(os.path.dirname(__file__), '../../', 'util')
cpp_lib_result = subprocess.run(['make', '-C', make_dir, 'all'], shell=True, check=True, capture_output=True)
cpp_lib_result = subprocess.run('make -C %s all' % make_dir, shell=True, check=True, capture_output=True)

上面是调用makefile的示例代码。 第二行将失败,并显示此消息。

subprocess.CalledProcessError: Command '['make', '-C', '../../util', 'all']' returned non-zero exit status 2.

如果我在第二行中删除shell=True,它将起作用。

第三行即使在shell=True下也可以使用。

我在某处读到shell=True对参数很挑剔。但我找不到任何进一步的信息。这些参数到底有多挑剔?

我还被告知要使用列表而不是字符串。为什么首选使用列表

0 个答案:

没有答案