Python:如何窥视pty对象以避免阻塞?

Python:如何窥视pty对象以避免阻塞?,第1张

概述我正在使用pty来读取非阻塞这样的进程的stdout:import os import pty import subprocess master, slave = pty.openpty() p = subprocess.Popen(cmd, stdout = slave) stdout = os.fdopen(master) while True:

我正在使用pty来读取非阻塞这样的进程的stdout:

import osimport ptyimport subprocessmaster,slave = pty.openpty()p = subprocess.Popen(cmd,stdout = slave)stdout = os.fdopen(master)while True:    if p.poll() != None:        break    print stdout.readline() stdout.close()

除了while循环偶尔阻塞外,一切正常.这是因为行打印stdout.readline()正在等待从stdout读取的内容.但如果该程序已经终止,我的小脚本将永远挂起.

我的问题是:有没有办法窥视stdout对象并检查是否有可读取的数据?如果不是这种情况,它应该继续通过while循环,它将发现该进程实际上已经终止并打破了循环.

@H_404_13@最佳答案@H_404_13@是的,使用select module’s poll:

import selectq = select.poll()q.register(stdout,select.PolliN)

并在使用时:

l = q.poll(0)if not l:    pass # no inputelse:    pass # there is some input
@H_404_13@ 总结

以上是内存溢出为你收集整理的Python:如何窥视pty对象以避免阻塞?全部内容,希望文章能够帮你解决Python:如何窥视pty对象以避免阻塞?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1205507.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存