1. ホーム
  2. unix

[解決済み] ファイルディスクリプタとは何か、わかりやすく解説します。

2022-03-19 15:50:53

質問

  1. ファイル記述子について、ウィキペディアの記述と比較して、より簡略化した説明はどのようなものでしょうか?なぜそれが必要なのですか?例えば、シェルプロセスを例にして、どのように適用するのですか?

  2. 1 つのプロセス テーブルに複数のファイル記述子が含まれますか。ある場合は、その理由は?

解決方法は?

簡単に言うと、ファイルを開くと、オペレーティングシステムはそのファイルを表すエントリーを作成し、その開いたファイルに関する情報を保存します。つまり、OS上で100個のファイルを開いたとすると、OS上(カーネルのどこか)には100個のエントリが存在することになります。これらのエントリーは、(...100、101、102...)のような整数で表現されます。このエントリ番号がファイルディスクリプタです。 つまり、そのプロセスで開いているファイルを一意に表す整数の番号に過ぎないのです。 プロセスが 10 個のファイルをオープンした場合、Process テーブルにはファイル記述子として 10 個のエントリが作成されます。

同様に、ネットワーク・ソケットを開くときも整数で表され、Socket Descriptorと呼ばれます。 ご理解いただけたでしょうか。