gpt4 book ai didi

python - 在后台执行子进程

转载 作者:太空狗 更新时间:2023-10-29 19:37:24 25 4
gpt4 key购买 nike

我有一个 python 脚本,它接受一个输入,将其格式化为调用服务器上另一个脚本的命令,然后使用子进程执行:

import sys, subprocess

thingy = sys.argv[1]

command = 'usr/local/bin/otherscript.pl {0} &'.format(thingy)
command_list = command.split()
subprocess.call(command_list)

我将 & 附加到末尾,因为 otherscript.pl 需要一些时间来执行,而且我更喜欢在后台运行。但是,脚本似乎仍然在执行,但没有将控制权交还给 shell,我必须等到执行完成才能返回到我的提示符。是否有另一种方法可以使用 subprocess 在后台完全运行脚本?

最佳答案

& 是一个 shell 特性。如果您希望它与 subprocess 一起使用,您必须指定 shell=True,例如:

subprocess.call(command, shell=True)

这将允许您在后台运行命令。

注意事项:

  1. 因为shell=True,上面使用command,而不是command_list

  2. 使用 shell=True 启用 shell 的所有功能。不要这样做,除非 command 包括 thingy 来自您信任的来源。

更安全的选择

此替代方法仍然允许您在后台运行命令,但它是安全的,因为它使用默认的 shell=False:

p = subprocess.Popen(command_list)

这条语句执行后,命令会在后台运行。如果您想确保它已完成,请运行 p.wait()

关于python - 在后台执行子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32577071/

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