1
在做之前:os.read(fd,1024)
我想检查一下,会有输出,而不是挂起,直到输出它收到。由于fd是一个int对象,我不能做:如何确定一个fd是否可以用os.read(fd,[buffer [)不挂起来读取?
os.fstat(f.fileno()).st_size
如果我能得到的尺寸,我可以检查它不为0
很抱歉,如果这是非常简单的,我是新来的蟒蛇。
在做之前:os.read(fd,1024)
我想检查一下,会有输出,而不是挂起,直到输出它收到。由于fd是一个int对象,我不能做:如何确定一个fd是否可以用os.read(fd,[buffer [)不挂起来读取?
os.fstat(f.fileno()).st_size
如果我能得到的尺寸,我可以检查它不为0
很抱歉,如果这是非常简单的,我是新来的蟒蛇。
使用select.select
。 (在Windows中,你只能用插座):
import select
...
r, _, _ = select.select([fd], [], [], 0)
if r:
data = os.read(fd, 1024)
该工作在pty环境下吗?我正在用proc_open从另一个进程(不是python)读取python程序的标准输出(正在运行:pty.spawn(/ bin/sh))。上述代码仍然存在悬而未决的问题。如果有输出,它会读取它,如果没有,它会挂起和方式。 – OBV
@OBV,'select.select'将立即以'timeout'(第四个参数)返回为0. – falsetru
是指select.select([fd] ...宁可? – OBV