From: Yukihiro Matsumoto Date: 2009-06-16T10:31:23+09:00 Subject: [ruby-dev:38649] Re: 1.9でstdin/out/errをcloseしないわけ まつもと ゆきひろです In message "Re: [ruby-dev:38648] Re: 1.9でstdin/out/errをcloseしないわけ" on Tue, 16 Jun 2009 10:06:39 +0900, Tanaka Akira writes: |たとえば、stderr (fd=2) を close した状態で、ソケットで通信 |しようしたとして fd が 2 になり、その状態で、ログを stderr |に出力すると、ソケットにログが出力されて通信が壊れます。 |プログラムは 0, 1, 2 は標準入出力として用意されていて、open |や socket で新しくつくった fd が 0, 1, 2 であるとは考えない |ものです。0, 1, 2 を close することはその仮定を壊します。 ふむ、安全側に倒したということでしょうか。理解しました。 さっき、フライングでパッチをコミットしちゃいましたが、これは 元に戻すことにします。 しかし、実際にfdをcloseしないにしても、明示的にIOオブジェクト をcloseしたことが勝手にキャンセルされるのは気持ちよくはないで すね。fptrにcloseしたという情報を含めるべきなのかもしれません。