我在嘗試瞭解子處理模塊,因此正在製作一臺hlds服務器管理員。Popen子處理問題
我的目標是能夠啓動服務器實例並通過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服務器的任何標準輸出,但如果我不設定標準輸出到它工作正常管。並且hlds.communicate('quit')
似乎也不會被髮送到hlds進程標準輸入。 ls -l命令正確返回stdout,但不是hlds。
所有幫助表示感謝! :)