我正在研究一个ruby脚本,最终启动一个需要相当长时间的系统过程。 我需要从这个过程的stderr中读取,并根据输出结果做出反应。
我目前正在这样做:
Open3.popen3(cmd_to_run) do |stdin,stdout,stderr,waitthread| stderr.each_line do |line| # look out for specific lines and react to them accordingly end end
但是我也看到了实现类似的东西,但是用kernel#select来实现:
Open3.popen3(cmd_to_run) do |stdin,waitthread| io = select([stderr],nil,30) if io.nil? log("Command timed out during Kernel#select") return end io[0][0].each_line do |line| # look out for specific lines and react to them accordingly end end
我已经阅读了pickaxe的select,但是我为什么应该(如果我应该)使用它呢? 第一种方法是一样的。
安装XSP时没有发现包装“单声道”
更改文件时间(触摸)
无法推送到我的github私人存储库
terminal模拟器,允许dynamic改变背景颜色
sed返回“sed:命令乱码”
C中两个date之间的差异
在Linux中debuggingC ++
graphicsgit客户端
LINUX:是否可以通过局域网进行pipe道传输? 如果是这样,这是可取的吗? 还有什么其他的select?
我用pyinstaller创build的二进制文件与linux不兼容
可能有两个原因:
你可以使用超时,你不能与each_line
您可以等待多个IO对象,例如io = select([stdout,stderr])和多个事件(例如,写入事件或异常)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。