Descriptor tableUnix カーネルは、 、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ます。
そう
- 子プロセスがファイルを読み取ると、同じファイルのオフセットが親プロセスで変更されますか?
fork1 が true の場合、2 つのプロセスに対して、同じファイルに対して同じ効果を得る便利な方法はありますか? つまり、2 つのプロセスが同じファイルの位置 (オフセット) 情報を共有します。- 同じファイルを開いた2つの無関係なプロセスのように、両方のプロセスがまったく無関係なテーブルを持つようにフォークする方法はありますか?