Unixでファイルを開く方法は?

Unixでファイルを開く方法は?

ファイルを開く内部プロセスは何ですか?

ファイルが開かれると、システムはパス名をinodeに変換し、inodeからそのドライブディスク部分を検索してファイルの内容を見つけます。そうですか?ファイルを開く過程については漠然としか分かりませんが、もっと詳しく知りたいです。

ベストアンサー1

通常、次の本を読んでください。これカーネルからほとんどの詳細に対する回答を入手してください。しかし、通常、プロセスは次のようになります。

  1. 絶対パスの場合は、プロセスのルートディレクトリ(chroot既知のシステムFSルートと同様の理由で異なる可能性があります)、現在のプロセスディレクトリ、または指定されたディレクトリから指定されたパスを使用してファイルシステムを参照します。 (と同じ呼び出しで)、両方とも相対パスの場合です。指定されたパスは、一連のパスコンポーネント(「/」で区切られています)に分割され、順番に処理されます。このプロセス(「パスルックアップ」、「nameiルックアップ」と呼ばれる)中にディレクトリの内容とマウントポイントの交差が分析され、各パスコンポーネントはオブジェクトへの一時参照(以前のUnix、Linux)になります。その結果、成功すると、最終ファイルのvnodeが見つかり(必要に応じて作成され)、保持されます(通常は参照カウントを使用してカーネルRAMでアクティブになります)。jailLXCopenatvnodesfileinode
  2. このvnodeを参照する「オープンファイル」オブジェクトを作成し、それをfile descriptorこの要求に割り当てられたプロセスに関連付けます。

このディレクトリ検索の詳細は、特定のVFSによって大きく異なります。メモリのみのディレクトリ(tmpfs)、ディスクベースのディレクトリ(など)を含む任意の種類にすることができますが、ext4ディレクトリ階層の一般的な概念はまだ適用されています。

おすすめ記事