|
ファイル記述子(ファイルきじゅつし、File Descriptor)とは、プログラミングにおいてファイルへの参照を抽象化したキーである。ファイルディスクリプタあるいはFDとも呼ばれる。Microsoft Windowsでは、「ファイルハンドル」がほぼ相当するが、技術的には異なるオブジェクトである。 == 概要 == POSIXでは、ファイル記述子は整数であり、詳述すればC言語の int型である。POSIXでは、全てのプロセスが持つべき3つのファイル記述子を定義している(デーモンなどはその限りではない)。 一般にファイル記述子は、オープン中ファイルの詳細を記録しているカーネル内データ構造(配列)へのインデックスである。POSIXでは、これをファイル記述子テーブルと呼び、各プロセスが自身のファイル記述子テーブルを持つ。ユーザーアプリケーションは抽象キー( = ファイル記述子 )をシステムコール経由でカーネルに渡し、カーネルはそのキーに対応するファイルにアクセスする。アプリケーション自身はファイル記述子テーブルを直接読み書きできない。 UNIX系システムでは、ファイル記述子がファイルだけでなく、ディレクトリ、ブロックデバイスやキャラクターデバイス(スペシャルファイルとも呼ぶ)、ソケット、FIFO(名前付きパイプ)、名前なしパイプなどのカーネルオブジェクトを汎用的に参照するのに使われる。 標準Cのライブラリの、FILE型(ライブラリが管理するデータ構造)へのポインタ(FILE *)があらわすものをストリームと言い〔JIS X 3010-1993 §7.9の中に「ハンドル」という語はない。〕、POSIXではファイル記述子とストリームをひっくるめた用語として「ハンドル」を使っている(参: "Interaction of File Descriptors and Standard I/O Streams")。また、FILE *を「ファイルハンドル」と呼ぶ者がいる(K&R2版訳本改訂版では「ファイル・ポインタ」)。FILE型(ふつう構造体)は、UNIX系システムでは一般に低レベルのファイル記述子を含んでいる。これらは上位層のコンセプトであるため、ファイル記述子と同一視はできない。〔他のUNIX系仕様で、NFSなどにファイルハンドルの語が見られる。〕 Microsoft Windowsカーネルでは、ファイル記述子と同様であるが、より汎用的な機構によりファイルオブジェクトを含むさまざまなカーネルオブジェクトをハンドルというものに関連づける枠組が採用されている。特にファイルを表すカーネルオブジェクトに関連づけられたハンドルを「ファイルハンドル」と呼ぶが、これはPOSIXにおけるファイル記述子とほぼ同等の役割を担うものと解釈することができる。このファイルハンドルは、前述の(ファイル)ハンドルとは異なるものを指すが、同一の語のため、混乱を生じることがある。(MS-DOSではファイル記述子ほぼそのものを指して「ファイルハンドル」と呼んでいた) マイクロソフトのCランタイムライブラリ (CRT)は、C標準I/Oライブラリとは別に、UNIX互換関数群として、ネイティブのファイルハンドルをPOSIX的な整数のファイル記述子に変換して扱う機能を持っている。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「ファイル記述子」の詳細全文を読む スポンサード リンク
|