From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1998-06-11T17:09:14+09:00 Subject: [ruby-dev:2848] Re: [BUG] IO#eof? when Thread using けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :2847 ] the message: "[ruby-dev:2847] Re: [BUG] IO#eof? when Thread using ", on Jun/11 16:49(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|必ず決まったサイズだけ読んでくれないなら, sysreadと同じじゃん? って思っ >|ちゃうのですが... > >それは否定しませんが,なかなか難しいところがあるのです. うん? >|その規定のサイズだけ読み込めなかったら, 例外を出して, EOFError.restsに >|最後に読み込んだ文字列をセットする. というのはどう? > >ファイルなどの場合にはそれで良い場合も多いとは思いますが,た >とえばソケットでなんらかの都合で送られたデータの一部しか届い >ていない時にはEOFでなくても,必要な量のデータが読み出せない >場合もあります.そもそもUNIXではEOFを確実に検出できる方法は >ありません.ですから,実際read(2)だけではなく,fread(3)など >もこのような仕様になっていて,lenは「読み込む最大長」の指定 >になっているでしょう? ベースになっているOSのモデルがこのよ >うなものですから,汎用的なIOのメソッドとしてはそのような仕様 >は難しいのではないかと思います. あれ? readって確実にそのサイズだけ読むようになっていないの? つまり, soketなどの場合はそのサイズだけ揃わない時には, ブロックして待つように??? 別にそれで全然構わないと思うんだけどなあ... それに, その話しだと, getsとかも改行まで読み込むとは限らないって話しに なっているわけ? __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---