Unixシステムでファイルを「読み取り()」または「書き込み()」するには、明示的に「open()」および「close()」ファイルを使用する必要があるのはなぜですか?

Unixシステムでファイルを「読み取り()」または「書き込み()」するには、明示的に「open()」および「close()」ファイルを使用する必要があるのはなぜですか?

Unixファイルシステム設計になぜ存在し、存在するのですかopen()close()

OSが初めて検出read()またはwrite()呼び出されopen()、通常実行することはできませんか?

ベストアンサー1

デニス・リッチが言及した«Unix時分割システムの進化»openclose最初からreadシステムにいました。writecreat

ないシステムは想像できopenませんがclose、デザインが複雑になると思います。特に、非常に限られた RAM で UNIX が起動された古いコンピュータでは、通常は読み込みと書き込みの呼び出しを一度だけ行うのではなく、複数回呼び出すことを望んでいます。現在のファイルの場所を保持するハンドルがある場合、これは単純化されます。ハンドルを返すには、ハンドルと自己戻り状態のペアを返す必要がありますreadwriteペアのハンドル部分は他のすべての呼び出しには役に立たないので、この配列を厄介にします。カーソル状態をカーネルに残すことは、単純なバッファリングよりも効率的です。道順に関連するいくつかの費用もあります。ハンドルがあれば、費用を一度だけ支払うことができます。さらに、UNIXの世界観の一部のファイルにはファイルシステムパスさえありません(またはありません。今ではそうです/proc/self/fd)。

おすすめ記事