我正在编写一些代码,它接收一个文件,将该文件传递给几个二进制文件之一进行处理,并监视转换过程中的错误。我已经在 OSX 上编写并测试了以下例程,但由于我不清楚的原因,linux 失败了。
#run the command, capture the output so it doesn't display
PTY.spawn(command) {|r,w,pid|
until r.eof? do
##mark
puts r.readline
end
}
运行的命令变化很大,##mark 处的代码已被简化为本地回显,以尝试调试问题。该命令执行,脚本在终端中打印预期的输出,然后引发异常。
它在 Debian 系统上产生的错误是: Errno::EIO (Input/output error - /dev/pts/0):
我能想到的所有命令字符串都会产生该错误,当我在没有本地 echo 块的情况下运行代码时,它运行得很好:
PTY.spawn(command) {|r,w,pid|}
在任何一种情况下,命令本身都可以正常执行,但似乎 debian linux 没有将 eof 发送到 pty。PTY 的文档页面和 ruby-doc 上的 IO 似乎在这里没有任何帮助。
有什么建议么?谢谢。
-vox-