sysread(maxlen, outbuf = "") -> String
[permalink][rdoc]read(2) を用いて入力を行ない、入力されたデータを含む文字列を返します。stdio を経由しないので gets や getc や eof? などと混用すると思わぬ動作をすることがあります。
バイナリ読み込みメソッドとして動作します。
既に EOF に達していれば EOFError が発生します。ただし、maxlen に 0 が指定されている場合は、空文字列 "" を返します。
第二引数を指定した sysread の呼び出しでデータが空であった場合(sysread が例外 EOFError を発生させる場合)、 outbuf は空文字列になります。
outbuf = "x" * 20; io = File.open("/dev/null") p((io.sysread(10,outbuf) rescue nil)) p outbuf => nil ""