ファイルディスクリプター
読み:ファイルディスクリプター
外語: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からファイル名を得る
LinuxやFreeBSDなど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
}
}
再検索