检查文件描述符是否有效
我怎么检查一个文件描述符是否有效呢?我想在fd=3
可用的时候写入数据;如果不可用,我就想写入标准输出(stdout)。我知道我可以在每次调用os.write
的时候用try-except语句来处理错误,但我想提前知道fd=3
是否可以写入。
2 个回答
3
你可以试着在一开始用 os.write
写入 fd=3
,把这个放在一个 try
-except
块里,然后根据这个操作是否成功来决定后面的行为。
这样的话,你就不需要在每次调用的时候都用 try
-except
来包裹了。当然,如果在你处理的过程中 fd=3
突然不再有效了(比如说某个管道被另一端关闭了),那这个方法就会失效。
9
你可以使用 os.fstat
来检查文件描述符是否有效,这样在每次写入之前都能确认一下。不过,即使这样做,你还是需要用 try/except 来处理,因为无效的文件描述符会引发一个 OSError
错误。其实,自己写一个带有 try/except 的写入函数可能会更好。
def write(data, fd=3):
try:
os.write(fd, data)
except OSError:
sys.stdout.write(data)