我正在尝试了解子处理模块,因此正在成为 hlds 服务器管理员。
我的目标是能够启动服务器实例并通过 dispatcher.py 发送所有命令来管理多个服务器,例如向子进程标准输入发送命令。
到目前为止,我已经进行了一些初步测试,但已经卡住了:]
#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 服务器获得任何标准输出,但如果我不将标准输出设置为 PIPE,它工作正常。而且hlds.communicate('quit')
似乎也没有发送到 hlds 进程标准输入。ls -l 命令正确返回标准输出,但不返回 hlds。
所有帮助表示赞赏!:)