From: nobu.nakada@... Date: 1999-10-09T18:04:28+09:00 Subject: [ruby-list:17568] Re: Exception.html & Errno.html for ruby-man-1.4.2-jp なかだです。 At Sat, 9 Oct 1999 03:26:06 +0900, matz@netlab.co.jp (Yukihiro Matsumoto) wrote: > 結局はUNIXにおけるSIGPIPEというモデルそのものに由来する現象 > ですから、 > > trap "SIGPIPE", lambda{exit} > > のような方法で対応するしかないのかなあと思います。 SIGPIPE に関してはもっと簡単な方法がありました。 #!/usr/bin/ruby yes = ARGV.shift || "yes" trap("SIGPIPE") {} f = if STDOUT.tty? then open("|-", "w") || exit else STDOUT end begin loop do f.puts yes end rescue SystemCallError STDERR.puts $! end でもこれは signal で処理するのを避けて、その結果 EPIPE で失敗す るのを期待してるわけですよね。 というか SIGPIPE だけなぜか2回来るっていうのがヘンなのかも。と か思って f.sync = true を足してみたら、これまたうまく行ったり行か なかったり。(^^; -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦