ファイルディスクリプタとは

ファイルディスクリプタ(File descriptor,FD)とは、OSがカーネルのレイヤで用意している抽象化の仕組みの一つ。POSIX系のOSでは可能な限り多くのものが「ファイル」として抽象化される。例えば、いわゆるファイルとしてイメージされるもの以外のOSやCPUに内蔵されてる乱数生成の仕組みや標準出力、ソケットなどに対してもファイルディスクリプタが割り当てられる*1まずプロセスが起動すると通常OSは3つの擬似ファイルを用意して、それぞれにファイルディスクリプタを対応させる。

 

 

 

*1:Windowsだとソケットはファイルとしては扱えなかったり、ファイル出力とコンソール出力でAPIインターフェイスが違ったりなど、POSIXほど全てが統一的にファイルとして取り扱われるわけではない。Go言語ではこうしたPOSIX系とWindows系との違いをGo言語側でできるだけ吸収してくれている。例えばio.Writerなどを導入することでOS間のIFの違いを意識させない作りになっている