From: "Takashima, Makoto" Date: 1999-10-20T02:01:28+09:00 Subject: [ruby-dev:8064] Re: [ruby-list:17813] Re: Exception.html & Errno.html for ruby-man-1.4.2-jp 高島です。 On Tue, 19 Oct 1999 14:13:22 +0900 matz@netlab.co.jp (Yukihiro Matsumoto) wrote: > ってことで、結局 SIGPIPE を無視しても EPIPE で検出できると思 > うのですが、どうでしょう? 問題になる可能性があるのは、write > でバッファがいっぱいになるタイミングの関係で、EPIPEが検出さ > れずにSIGPIPEが来ちゃうことが、もしあれば、それの検出が(でき > ない、遅れる)可能性があることですね。 もしかして、SIGPIPEのハンドラをどうこうすると言っていたのは、 write()を呼び出す部分だけでの事だったのでしょうか? # rubyのソースを全然確認してないもので・・・ もし、そういうことであればシグナルは基本的に非同期ですから 予期しないタイミングでSIGPIPEを受けても不思議ではないと思い ます。 私がSIGPIPEを無視すれば問題無いはずと言っていたのは、 SIGPIPEを常に無視する(main()の先頭でSIG_IGNに設定する) と言っているつもりでした。であれば、SIGPIPEが発生することは 絶対に無いはずですし、相手がソケットやパイプをクローズした後 に write()すれば確実にEPIPEで検出できると思うのです。 もしかしたら、カーネルの実装やバッファリング等の影響でエラー 検出のタイミングがずれることがあるのかもしれませんが、最終的 には write()でエラーが検出されるわけですから、見た目は変わり ありませんし、全く問題無いと思います。 # 別に理想論を言っているつもりはないのですが、これが単なる理 # 想論に聞こえるようなOSがあるのでしたら、そのようなOSを私は # 使いたくありませんね。(^^) -- 高島真 (tksmmkt@coral.ocn.ne.jp)