Ruby IO#getcは、文字を返す前に\nを受信するまで待機しているようです。
このスクリプトを実行しようとすると、次のようになります。
STDOUT.sync = true
STDIN.sync = true
while data = STDIN.getc
STDOUT.puts "Char arrived"
end
stdinに送信された文字ごとに1つの「到着した文字」が返されますが、\nが送信された後でのみです。
STDIN.sync = trueと書いても、すべての文字がバッファリングされているようです。
文字がSTDINに送信された直後に、スクリプトに「文字が到着しました」と出力する方法を知っている人はいますか?