[英]Zombie process when calling Popen and then Kill()
我对单元测试有一些疑问; 在安装程序中的哪个位置检查进程是否正在运行,如果没有运行,则使用Popen运行它。
在teardown()
我调用myprocess.kill()
,因此每次测试都会得到一个干净的状态。
这仅在第一次时有效。 因为当我在该进程上调用kill命令时; 最终变成僵尸状态(Z +); 这意味着要摆脱它,我还需要杀死单元测试类,因为Popen起源于测试用例的设置阶段。
有办法解决这个问题吗? 我使用pytest调用测试,并通过单元测试python脚本作为参数。
class Mytest(unittest.TestCase)
running_process = ""
def setUp(self):
command = "~/myprocess"
self.running_process = Popen(command, shell=True, stdout=PIPE, stderr=STDOUT)
def test_tryprocess(self):
#do something
def test_tryprocess_again(self):
# do something else
def tearDown(self):
self.running_process.kill()
找到了罪魁祸首:当我调用Popen时,我也调用了shell = True。 这将与进程建立联系,因此它将挂起,直到外壳也被杀死为止。
要解决该问题,请从调用中删除shell=True
,它可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.