子进程不会在.kill()和.terminate

时间:2019-01-29 11:39:39

标签: python-3.x subprocess

我用Popen和线程打开了一个子进程(如果有关系),但是当我退出代码时,该子进程一直在后台运行,因此我无法再次运行它,因为可以一次打开Java文件(使用特定端口) 。如果要再次运行它,必须从任务管理器中将其杀死。 注意:如果我通过python退出,请按stop,它会停止并终止进程,但是如果我按应用程序上的红色x按钮,则不会。

# create a thread for jon code
def launch_Selenium_Thread(self):
    t1 = threading.Thread(target=self.jon_code)
    t1.daemon = True
    t1.start()

# open and run the server(java file)
def jon_code(self):
    print("begin")
    self.line_check = ''
    self.p = subprocess.Popen(['java', '-jar', "Staff\gs-rest-service- 
                 0.1.0.jar"], shell=True, stdout=subprocess.PIPE, 
                    stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    self.line = self.p.stdout.readline()

    while(True):
        print(self.line)
        self.line = self.p.stdout.readline()
        self.line_dup = str(self.line)

def closeEvent(self, event):
    self.p.terminate() # I tried both of them 
    self.p.kill()

btw我是新来的,可以从网络和指南中学习一切。

0 个答案:

没有答案