1 回答
TA贡献1854条经验 获得超8个赞
我认为有两个问题:
stop_server
并且每个子进程都启动一个新的子进程,这只能在 中完成。command
start_server
start_server
在子进程完成之前使用哪些块,从而防止程序在运行时向服务器发送任何其他命令。server.communicate()
相反
start_server
应创建子进程,然后将其存储在可由 和 访问的变量中,stop_server
command
server.communicate
应在 中完成。stop_server
stop_server
也只是 的一个特例。command
import subprocess
class Server:
def __init__(self, server_start_bat, dir):
self.server_start_bat = server_start_bat
self.dir = dir
def start_server(self):
self.server = subprocess.Popen(self.server_start_bat, cwd=self.dir, shell=True, stdin=subprocess.PIPE, text=True)
def stop_server(self):
self.command('stop')
self.server.communicate()
def command(self, command):
self.server.stdin.write(f'{command}\n')
添加回答
举报