Popen子处理问题

我正在尝试了解子处理模块,因此要成为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.

所有帮助表示赞赏!

上一篇:python使用ffmpeg合成文件


下一篇:Python bat 两种方式修改环境变量