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