我正在尝试学习subprocessing模块,并因此成为了一个hlds服务器管理员。
我的目标是能够通过dispatcher.py启动服务器实例并发送所有命令以管理多个服务器,例如将命令发送到子进程的stdin。
以下是我目前为一些初步测试所做的工作,但我已经遇到了困难:]
#dispatcher.py
import subprocess
RUN = '/home/daniel/hlds/hlds_run -game cstrike -map de_dust2 -maxplayers 11'
#RUN = "ls -l"
hlds = subprocess.Popen(RUN.split(), stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
print hlds.communicate()[0]
print hlds.communicate()[1]
hlds.communicate('quit')
我从hlds服务器没有得到任何标准输出,但如果我不设置stdout为PIPE,则它可以正常工作。而 hlds.communicate('quit')
似乎也没有发送到hlds进程的标准输入。 ls -l命令返回stdout正确,但hlds没有。
非常感谢您的帮助! :)