gpt4 book ai didi

ruby - 是否有一种简单的方法来检查 Ruby IO 实例是否会阻塞 read()?

转载 作者:数据小太阳 更新时间:2023-10-29 06:38:05 25 4
gpt4 key购买 nike

我正在寻找一种 Ruby 中的方法,基本上是这样的:

io.ready_for_read?

我只想检查给定的 IO 对象(在我的例子中是 popen 调用的结果)是否有可用的输出,即后续调用 io.read(1) 不会阻塞。

这是我看到的两个选项,我都不喜欢:

  1. io.read_nonblock - Unix read() 的抽象太薄了 - 我不想处理 errno 错误处理。

  2. io.select with timeout 0 -- 混淆了这个简单操作的目的。

有没有我忽略的更好的选择?

最佳答案

有点晚了,但是如果您需要'io/wait',您可以使用ready? 来验证IO 是否可以无阻塞地读取。当然,根据您打算阅读多少(以及您打算如何阅读),您的 IO 对象可能仍会阻塞,但这应该有所帮助。我不确定是否所有平台都支持这个库,我也不知道为什么这个功能与 IO 库的其余部分分开。在这里查看更多信息:http://ruby-doc.org/stdlib/libdoc/io/wait/rdoc/

关于ruby - 是否有一种简单的方法来检查 Ruby IO 实例是否会阻塞 read()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/930989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com