ファイルを受け取り、そのファイルをいくつかのバイナリの 1 つに渡して処理し、変換プロセスのエラーを監視するコードを書いています。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
}
実行されるコマンドはさまざまで、## マークのコードは、問題をデバッグするためにローカル エコーに単純化されています。コマンドが実行され、スクリプトはターミナルに予期される出力を出力してから、例外をスローします。
Debian システムで生成されるエラーは次のとおりです。 Errno::EIO (Input/output error - /dev/pts/0):
私が思いついたすべてのコマンド文字列はそのエラーを生成し、ローカル エコー ブロックなしでコードを実行すると、問題なく実行されます。
PTY.spawn(command) {|r,w,pid|}
どちらの場合でも、コマンド自体は正常に実行されますが、debian linux が eof を pty に送信していないようです。PTY のドキュメント ページと ruby-doc の IO は、ここでは何の助けにもならないようです。
助言がありますか?ありがとう。
-vox-