From: kjana@...4lab.to (YANAGAWA Kazuhisa) Date: 2002-09-22T00:46:59+09:00 Subject: [ruby-dev:18333] Re: rubicon on EWS4800 In message <20020921.152641.11483667.JCA02266@nifty.ne.jp> JCA02266@nifty.ne.jp writes: > > ずテストを飛ばしてます。後者はこれまた謎なのですが、このよう > > に修正しないとテストが通りません。(これも要調査・・・っと昔 > > から思ってるんだけどなかなか手がつけられない) > > これは、EWS4800 でのstdioの挙動がそうなるようです。C で書い > ても同様になりました。man には、 > > ファイルが更新モードでオープンされると、その stream 上では入 > 力 も 出 力 も 両 方 行 うことができます。ただし、入力の後に > fflush(3S) や fseek(3S) あるいは fsetpos(3S) や rewind(3S) > を 介 在 さ せ ず に 直接出力を続けたり、出力の後に fseek や > fsetpos あるいは rewind を介在させずに直接入力を続けたり、あ > るいはエンド・オブ・ファイルを検出する入力操作なしに出力の後 > に直接入力を続けたりすることはできません。 > > っとあるので、このせいかも。仕方ないですね。 これ,ANSI-C の仕様なんで,確実にうまくいくのは fflush() するか位置決 め関数を読んだときだけっていうことでいいようです.なくてもうまくいくの はあくまでもプラットフォーム依存の拡張ということで.FreeBSD 4.5-RELEASE だと Reads and writes may be intermixed on read/write streams in any order, and do not require an intermediate seek as in previous versions of stdio. This is not portable to other systems, however; ANSI C requires that a file positioning function intervene between output and input, unless an input operation encounters end-of-file. なんて書いてある. # これを見る限り古い *BSD はみんなこのテスト通らない? previous ってど # れくらい前なんだろ. -- 柳川和久 @ 東大阪市 . 大阪府 September 22, 2002 It is never late to mend.