python stdout.read()阻塞_python - stdout readline()阻塞 - 堆栈内存溢出

我正在尝试通过Python 2.7运行Minecraft服务器,并且工作正常。 但是,当我尝试将其传递给stop命令时,它直到服务器输出某些内容后才执行任何操作。

这是我的代码:

import os, sys, subprocess, threading, time

class Server:

def start(self):

t = threading.Thread(target=self.run)

t.daemon = True

t.start()

def run(self):

self.p = subprocess.Popen('java -Xmx512M -Xms512M -jar minecraft_server.1.8.1.jar nogui',

cwd=os.path.join(os.getcwd(), 'server'),

stdin=subprocess.PIPE,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE,

shell=True)

while True:

nextline = self.p.stdout.readline()

print self.p.poll()

if nextline == '' and self.p.poll() != None:

break

if not nextline == '':

sys.stdout.write(nextline)

sys.stdout.flush()</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值