From: Tanaka Akira Date: 2007-08-31T07:34:49+09:00 Subject: [ruby-dev:31688] Re: IO.sysdup2, IO.sysdup, IO.sysclose In article <87d4xc97ml.fsf@fsij.org>, Tanaka Akira writes: > なるほど、そうかもしれません。両方作ってみました。 もうひとつ API のアイデアを思い付きました。 今回の件で IO で fd を扱いたくない問題は、 * open されていない fd に対応する IO を作れない * GC で close されてしまう * reopen が mode が原因で失敗することがある というところにあります。 なので、 * IO.new!(fd) や IO.sysnew(fd) とかを作って、open されていな い fd に対応する IO オブジェクトを作れるようにする * IO#close_on_gc = false とかをできるようにして、GC 時の close を抑制できるようにする * IO.dup2(oldio, newio) を新設する というのはどうでしょうか。 なお、IO.dup2 の oldio, newio は IO オブジェクトもしくは整数 で、mode を気にせず動作するものとします。IO オブジェクトを扱 えるので名前に sys はつけません。 あと、IO#close_on_gc は、現在おこなっている STDIN, STDOUT, STDERR の close されない特別扱いをいくらか減らすことができる という点でもよろしいんじゃないかと思います。 -- [田中 哲][たなか あきら][Tanaka Akira]