python中stdin_Python中的流stdin/stdout

我试图将bashshell流式传输到一个简单的WebSockets UI中,但在重定向IO时遇到问题。我想启动bash的一个实例,并连接stdout和stdin来编写与我的webui交互的函数。下面是我要做的简化版本:class Handler(WebSocketHandler):

def open(self):

print "New connection opened."

self.app = subprocess.Popen(["/bin/bash", "--norc", "-i"], stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=False)

thread.start_new_thread(self.io_loop, ())

def on_message(self, message):

self.app.stdin.write(message)

def on_close(self):

self.app.terminate()

def io_loop(self):

while self.app.poll() is None:

line = self.app.stdout.readline()

if line:

self.write_message(line)

虽然bash似乎启动了并且on_消息确实被调用了,但我没有得到任何输出。readline()仍处于阻塞状态。我试过了标准读(), 标准读(1) ,以及各种缓冲区修改,但仍然没有输出。我也尝试过在on_消息中使用尾随的'\n'对命令进行硬编码以隔离该问题,但仍然没有从readline()获得任何输出。在

理想情况下,我希望实时地流化写入stdout的每个字节,而不等待EOL或任何其他字符,但我很难找到合适的API。如有任何建议,我们将不胜感激。在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值