ファイルディスクリプター
読み:ファイルディスクリプター
外語:fd: file descriptor

 ファイル識別子のこと。
目次

概要
 アプリケーションファイルを使用する際、オペレーティングシステム(OS)側がどのファイルかを識別するのに用いる情報。
 OSによって内容は異なるが、この情報にはファイル名やパス名、ファイルサイズ、現在の(読み込み中の)位置などファイルアクセスに必須となる情報のほか、作成・更新日付などの付帯情報が含まれることもある。
 比較的新しいOSなどではファイルハンドルといい、ファイルディスクリプター+バッファー管理その他をまとめた管理構造体になっている。

特徴

UNIX
 UNIXおよび互換環境、その影響下にあるC言語系言語では、ファイルディスクリプターは0から始まる数値である。
 このうち、0、1、2は順に標準入力(stdin)、標準出力(stdout)、標準エラー出力(stderr)が割り当てられており、実際には3から順に割り当てられていくことになる。
 UNIXのC言語では、unistd.hにおいて、プリプロセッサーシンボルSTDIN_FILENO、STDOUT_FILENO、STDERR_FILENO、が定義されている。

fdからファイル名を得る
 LinuxFreeBSDなどUNIX互換の環境で、procfsを用いてfdからファイル名を得るには、次のようにする。
const size_t SIZE = 256;
char pathname[SIZE];
char buf[SIZE+1];
snprintf(pathname, SIZE, "/proc/%d/fd/%d", getpid(), fd);
ssize_t len = readlink(pathname, buf, SIZE);
if (len > 0) {
    if ((size_t(len) > ((sizeof KEY_SOUND_FILE_PATH - 1) + (sizeof KEY_SOUND_FILE_EXT - 1))) &&
        (size_t(len) <= SIZE)) {
        buf[len] = '\0';
        //hogehoge
    }
}

再検索