0

引用符

ライターがまだ書いていることをOSがどのように知るか。?... ファイルの EOF のワークフロー (^D や ^z のようなファイル ハンドルを閉じる) とは? EOF が書き込まれないとどうなりますか?

リーダーの読み取り速度がライターの書き込み速度よりも速い場合はどうなりますか? レートの不一致によってデッドロックが発生する可能性はありますか?

他の望ましくないシナリオは何ですか?

ファイルの読み取り中にOSはどのようにEOFを計算しますか?

-ニキル

PS: 現在のオペレーティング システムは Windows ですが、UNIX で同じ機能について興味深い機能を学習してもかまいません。

引用符

質問に関するその他の編集と詳細情報

EOFが文字ではないことがわかったので、ファイルのデータに書き込むことはできません。IF OS は、@saurabh でさえ指摘したように、File_size を使用して EOF を決定します。

(->)読み取り中の EOF (おそらく、適切なファイル システムのドライブ テーブルに格納されるファイル サイズから決定されます) )

  • ファイルサイズが固定されていない場合があるため、プロセスはファイルサイズのファイルテーブルをポーリングしてEOFを決定し続けます。
  • 私の知る限りでは 、EOF (この場合はファイル サイズ)を超えて読み取ると、EOF が発生します。ライターが断続的に書き込みを行い、リーダーがブロックを読み取っている状況を想定します。SO リーダーが利用可能なチャンクを超えて読み取ろうとすると、EOF がスローされますか? しかし、Writer はまだ EOF を通知していませんか?
4

2 に答える 2

0
  1. プログラムがファイルを閉じるまで。OS は、ファイルが読み取り/書き込み、またはその両方が可能であると想定します (ファイルを開くモードによって異なります)。

  2. EOF は何もありませんが、OS はファイルのサイズからそれを認識しています。たとえば、ファイルのサイズが 100 バイトで、バイト 99 から読み取るように要求し、さらに 6 バイトを要求すると、OS はファイルが 100 バイト目までであることを認識し、EOF を返します。

于 2012-05-28T07:13:16.500 に答える
0

あるプロセスからファイルに書き込み、別のプロセスからファイルから読み取る場合は、代わりにパイプの使用を検討することをお勧めします。これらはあなたの目的のために正確に設計された特別なファイルです:一方の端でのみ書き込み、もう一方の端で読み取ることができ、読み取るデータがない場合はリーダーがブロックするか、通知されます...
そして、そうです、特別なEOFはありませんマーカー。通常のファイルを使用していて頭痛があまり好きでない場合は、複数のプロセスから同時にそれらをいじらないでください。

于 2012-05-28T10:40:16.227 に答える