非常に基本的な質問です。ファイルへの完全修飾パスを指定して、ファイル記述子を開こうとしたときに実行される手順の正確な順序は何ですか。
を探しています
- これが Linux でどのように機能するか
- 指定されたファイル名 - inode とディスク セクターにどのように変換されるか
- Linux ファイル システム (具体的には ext3 と ext4) は、ある種のファイル名から inode へのマッピングを維持しますか?
非常に基本的な質問です。ファイルへの完全修飾パスを指定して、ファイル記述子を開こうとしたときに実行される手順の正確な順序は何ですか。
を探しています
tmpの答えに加えて:
ファイルは実際にはinodeです。
通常、特定のファイルには、その i ノードを指すディレクトリにエントリがあります。ディレクトリは名前を inode にマッピングしており、ディレクトリは一種のファイルです。inode に含まれる内容 (およびアプリケーション コードでクエリ可能) については、 stat(2)を参照してください。特に、さまざまなファイル タイプ (プレーン ファイル、ディレクトリ、char またはブロック デバイス、fifo、シンボリック リンクなど) については、 を参照してください。そのため、ディレクトリは多くの場合、文字列を inode にマッピングする辞書 (さまざまなファイル システム固有の方法で実装) です。そのため、ディレクトリには通常、 bashシェルの ELF 実行可能ファイル (つまり ) の inode に/bin/
関連付けられたエントリがあります。getdents(2)を呼び出すreaddir(3)を使用して、ディレクトリ内のエントリを読み取ります。bash
/bin/bash
特定の i ノードが何らかの名前で到達できなくなる場合があります。これは特に、プロセスがファイルをopen(2)し、次にunlink(2)している場合に発生します (開いているファイル記述子を保持したまま)。これは、一時ファイルを作成するための推奨される方法です。(これ以上プロセスがそれらを使用しなくなると、それらはカーネルによって解放されます)。
特定の inode に、それを指す複数のディレクトリ エントリがある場合もあります。(つまり、ファイルには「複数の名前」があります) これは、link(2)システムコールで発生します。(symlink ファイルはsymlink(2)で作成されます)。
path_resolution (7)およびunix ファイルシステム&ファイルシステム& ext2 & ext3 & ext4 & btrfs &ファイルシステムの比較wikipages も参照してください。この古いファイルシステムの説明も読んでください (一部の詳細は腐っていますが、一般的な考え方はここにあります。特にVFSの役割)