From: "とみたまさひろ" Date: 2002-04-11T20:04:47+09:00 Subject: [ruby-dev:16849] EPIPE の検出に失敗 とみたです。 多分既出じゃないと思うので報告します。 ruby 1.6.7 で、ソケットやパイプに対する EPIPE の検出に失敗することがあ ります。 ある端末から、 % mknod /tmp/hoge p % ruby -e 'File::open("/tmp/hoge", "w"){|f|loop{f.write("x"*40)}}' 別の端末から、 % cat /tmp/hoge すぐに ^C でも ruby が終了しないことがあります。 たぶん、これで直ると思います。 --- ruby-1.6.7/io.c.orig Wed Feb 27 13:47:51 2002 +++ ruby-1.6.7/io.c Thu Apr 11 20:01:44 2002 @@ -252,11 +252,11 @@ break; n = ptr - RSTRING(str)->ptr; } - if (n == 0 && ferror(f)) + if (n != RSTRING(str)->len && ferror(f)) rb_sys_fail(fptr->path); #else n = fwrite(RSTRING(str)->ptr, 1, RSTRING(str)->len, f); - if (n == 0 && ferror(f)) { + if (n != RSTRING(str)->len && ferror(f)) { rb_sys_fail(fptr->path); } #endif -- とみたまさひろ , 日本MySQLユーザ会 http://www.mysql.gr.jp