From: Tanaka Akira Date: 2006-07-03T11:36:39+09:00 Subject: [ruby-dev:28937] Re: IO.popen("echo a") clear O_APPEND of other fds. In article , nobu@ruby-lang.org writes: > IO#close_on_exec のように個別にしたほうが、file_flagsと > descriptor_flagsのどっちだっけ、とか悩まずにすむんじゃないでしょ > うか。それとも早すぎる怠惰化? 方向はいいと思います。|= で起こる以下の問題もないですし。 >> ... と思って考えてみると、IO#file_flags が Windows で動かな >> いからポータビリティに難あり、かな。 > > なけりゃないで未定義でいいんでは。 未定義や NotImplementedError になってると、|= が使えないのが ちょっと問題です。 % ruby -e ' class C def v raise NotImplementedError end def v=(x) end end C.new.v |= 1' -e:4:in `C#v': NotImplementedError (NotImplementedError) from -e:9 なので、用意するなら個別のほうがいいのですが、そもそもメソッ ドを用意するほど頻繁に使うフラグがあるのか、という点に疑問が あります。 個人的な感覚としては、O_NONBLOCK が一番よく使われると思うん ですが、これはむしろ (ソケットに対して) デフォルトで付けてし まうのがいいと思うのでメソッドは最善の方法では無いと思います し、次に良く使われるものは FD_CLOEXEC のような気がしますが、 そんなに使うかというと、あまりそんな気はしません。 -- [田中 哲][たなか あきら][Tanaka Akira]