Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > IOクラス > for_fd
new(fd, mode = "r", **opts) -> IO
[permalink][rdoc]for_fd(fd, mode = "r", **opts) -> IO
open(fd, mode = "r", **opts) -> IO
open(fd, mode = "r", **opts) {|io| ... } -> object
オープン済みのファイルディスクリプタ fd に対する新しい IO オブジェクトを生成して返します。
IO.open にブロックが与えられた場合、IO オブジェクトを生成しそれを引数としてブロックを実行します。ブロックの終了とともに fd はクローズされます。ブロックの結果を返します。 IO.new, IO.for_fd はブロックを受け付けません。
このメソッドは以下のキーワード引数を利用できます。
また、String#encode で説明されている :invalid => :replace などの変換オプションも指定することができます。外部エンコーディングから内部エンコーディングへの変換をするときに用いられます。
例:IO.new による読み込みモードでのファイルオープン
io = IO.new(IO.sysopen("testfile"))
io.class # => IO
io.close
例:IO.for_fd による読み込み・バイナリモードでのファイルオープン
IO.binwrite("testfile", "\xBF\xAA\x16\x04.\b\xCB\x12\xACoeQ\xFDv2\xCF9+\x81\x18")
io = IO.for_fd(IO.sysopen("testfile"), "r", binmode: true)
io.class # => IO
io.binmode? # => true
io.close
例:IO.open によるファイルオープン
IO.open(IO.sysopen("testfile")) { |io| p io.class } # => IO