我正在尝试了解子处理模块,因此要成为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,但是如果我不将stdout设置为PIPE,它就可以正常工作.而且hlds.communicate(‘quit’)似乎也没有发送到hlds进程stdin. ls -l命令正确返回标准输出,但不返回hlds.
所有帮助表示赞赏!