def _readline(self, timeout=0):
if not self.proc:
return None
p = select.poll()
flag_err = select.POLLERR | select.POLLHUP
rfile = self.proc.stdout
p.register(rfile, flag_err | select.POLLIN | select.POLLPRI)
buf = StringIO.StringIO()
while self.playing:
lst = p.poll(timeout)
if not lst:
line = buf.getvalue()
buf.close()
self.log.debug("Time out!: %r" % line)
return line
for fd, flags in lst:
if flags & flag_err:
self.log.debug("Error reading MPlayer: %s, flags=%x" %
(fd, flags))
self.emit("error", "Problems reading MPlayer output")
return None
c = rfile.read(1)
buf.write(c)
if c == "\n" or c == "\r":
line = buf.getvalue()
buf.close()
return line
# _readline()
评论列表
文章目录