【发布时间】:2021-02-25 07:51:07
【问题描述】:
我想使用subprocess 调用一些命令,这是启动和停止子进程的示例:
import subprocess
# Start
proc = subprocess.Popen(command)
# Stop
proc.terminate()
但是现在我正在尝试定义一个单独的函数来执行该过程,就像:
import os,sys
import subprocess
class Process:
def __init__(self):
self.proc = None
def start(self,cmd):
self.proc = subprocess.Popen(cmd, shell=True)
def stop(self):
self.proc.terminate()
if __name__ == '__main__':
cmd = "XXXXX"
p =Process()
p.start(cmd)
p.stop()
它可以工作并且它启动进程启动但它仍然存在并且即使使用 pid 杀死进程也无法调用停止函数。
有没有办法通过调用停止函数来停止进程?
【问题讨论】:
-
你没有从
start返回proc。 -
我在main中调用start函数
-
start可以工作,但您无法终止proc,因为您没有将变量保存在任何地方。你将什么作为参数传递给stop? -
在您发布的代码中没有
class或全局变量。请更新您的问题以包含您正在使用的代码。 -
类方法需要
self作为第一个参数,如果你想改变Process的属性,你可以使用self.proc。在这种情况下,stop不需要proc作为参数。
标签: python subprocess popen terminate