我有一个shell脚本,我使用os.system("./name_of_script")
我更愿意根据用户输入进行此调用(即用户输入“start”并完成调用,python程序中的其他一些内容也完成,当用户键入“stop”脚本时但是我发现这个调用完全集中在终端上(我真的不知道它的正确用法,但基本上整个程序在这个调用中停止,因为我的shell脚本执行直到收到键盘中断)。然后,当我执行键盘中断时,这是shell脚本停止执行的唯一时刻,之后执行其余代码。这在python中是否可行?
答案 0 :(得分:2)
简单地构建Popen
对象,如:
p = subprocess.Popen(['./name_of_script'])
...启动指定的程序而不阻塞它完成。
如果您以后想知道它是否已完成,您可以查看p.poll()
以了解其状态的更新。
这比os.system()
更快更安全,因为它不涉及shell(除非你调用的脚本自己运行),所以你不会暴露你自己去shellshock,shell注入漏洞或其他不必要的shell相关问题。