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