我正试图从一个空位阅读os.pipe()
,看看它在阅读时是否为空.问题是调用read()
会导致程序阻塞,直到实际上有东西可以读取,但是如果我正在进行的测试成功的话就没有.
我知道我可以使用select.select()
超时,但我想知道是否有另一个问题的解决方案.
你可以试试这个.
import os, fcntl fcntl.fcntl(thePipe, fcntl.F_SETFL, os.O_NONBLOCK)
这thePipe.read()
应该是非阻塞的.
从pipe(7)手册页:
如果进程尝试从空管道读取,则read(2)将阻塞,直到数据可用.(...)通过使用fcntl(2)
F_SETFL
操作启用O_NONBLOCK
打开文件状态标志,可以实现非阻塞I/O.