From: matz@... (Yukihiro Matsumoto) Date: 1998-06-11T17:49:08+09:00 Subject: [ruby-dev:2851] Re: [BUG] IO#eof? when Thread using まつもと ゆきひろです In message "[ruby-dev:2850] Re: [BUG] IO#eof? when Thread using" on 98/06/11, 石塚圭樹 writes: |けいじゅ@日本ラショナルソフトウェアです. |>man 2 readしていただけると分かると思いますが,その長さが読み |>込まれることは保証はされません.ご存知ありませんでした? |># これが保証されてたら苦労はしない | |いや. 知っていますよ. ここが, socketプログラミングでみんな引っかかると |ころですからね. | |Rubyでは, いちいちそういうめんどくさいことをなくすようにしてもらいたい |わけですよ. めんどうくさいことをなくすのは望ましいのですが,読み込む予定 の長さが読めなかったらEOFErrorを返すことでめんどうくさいこと はなくなるんでしょうか? いや,ある局面で楽になることにはも ちろん同意するのですが,本当はEOFでないかもしれないというのに EOFErrorがくるのはどんなものかと…. つまり,考えに反対しているのではなく,仕様に不賛成なのです. |>同様の理由によって,厳密に言うと状況によってはgetsとかでも改 |>行を読み込まない場合はあります.ある意味しょうがないですけど. | |厳密でもないと思いますよ. インターネットを介したらぶちきれになるでしょ |う. getsは「read(2)で読み込んできた長さが短かったら」という条件 ではなく,「read(2)が0を返したら」という条件だけになってるは ずですからかなりましでしょう.あれ,manを見ると0を返すのは EOFと明記してあるから「かなりまし」ではなく「大丈夫」のよう な気もするな. まあ,たとえ「大丈夫」でなくても,なんらかの理由でread(2)が0 を返しちゃったら本当のEOFと絶対に区別できませんから,手の打 ちようはないですよね. まつもと ゆきひろ /:|)