Descriptor table
Unix カーネルは、 、File table
、およびの3 つのデータ構造を使用して開いているファイルを表しますv-node table
。
プロセスがファイルを 2 回開くと、 で 2 つの異なる記述子、descriptor table
で 2 つのエントリを取得しfile table
(同じファイルで異なる位置にあるように)、両方とも で 1 つのエントリを指しv-node table
ます。
また、子プロセスは親プロセスの を継承するdescriptor table
ため、カーネルはdescriptor table
プロセスごとに 1 つを保持します。しかし、異なるプロセスからの 2 つの記述子が の同じエントリを指していopen file table
ます。
そう
- 子プロセスがファイルを読み取ると、同じファイルのオフセットが親プロセスで変更されますか?
fork
1 が true の場合、2 つのプロセスに対して、同じファイルに対して同じ効果を得る便利な方法はありますか? つまり、2 つのプロセスが同じファイルの位置 (オフセット) 情報を共有します。- 同じファイルを開いた2つの無関係なプロセスのように、両方のプロセスがまったく無関係なテーブルを持つようにフォークする方法はありますか?