names=for_fd,new,open
visibility=public
kind=defined

--- new(fd, mode = "r", opt={})                -> IO
--- for_fd(fd, mode = "r", opt={})             -> IO
--- open(fd, mode = "r", opt={})               -> IO
--- open(fd, mode = "r" opt={}) {|io| ... }   -> object

オープン済みのファイルディスクリプタ fd に対する新しい
IO オブジェクトを生成して返します。

IO.open にブロックが与えられた場合、IO オブジェクトを生成しそれを引数としてブロックを
実行します。ブロックの終了とともに fd はクローズされます。ブロックの結果を返します。
IO.new, IO.for_fd はブロックを受け付けません。

=== オプション引数
このメソッドは以下のオプションを利用できます。
  * :mode mode引数と同じ意味です
  * :external_encoding 外部エンコーディング。"-" はデフォルト外部エンコーディングの
    別名です。
  * :internal_encoding 内部エンコーディング。"-" はデフォルト内部エンコーディングの
    別名です。nilなら変換しません。
  * :encoding "extenc:intenc" の形で外部/内部エンコーディングを指定します。
  * :textmode 真を渡すと mode の "t" と同じ意味になります。
  * :binmode 真を渡すと mode の "b" と同じ意味になります。
  * :autoclose 偽を渡すと close時/GCでのファイナライザ呼出時に fd を close しません。
また、[[m:String#encode]] で説明されている :invalid => :replace などの
変換オプションも指定することができます。外部エンコーディングから
内部エンコーディングへの変換をするときに用いられます。


@param fd ファイルディスクリプタである整数を指定します。

@param mode [[m:Kernel.#open]] と同じ形式で IO のモードを指定します。[[m:File::Constants::RDONLY]] などの
            定数(数値)でモードを指定できます。詳細は組み込み関数 [[m:Kernel.#open]] を参照
            してください。
            mode は省略可能で、省略時のデフォルトのモードは、
            [[man:fcntl(2)]] で F_GETFL フラグが利用できる環境では第一引数で指定した fd のモードを引き継ぎ、
            利用できない環境では "r" になります。

@param opt オプション引数

@raise Errno::EXXX IO オブジェクトの生成に失敗した場合に発生します。

