我用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我是新来的,可以从网络和指南中学习一切。