ファイルディスクリプタ
プロセスが開いているもの(ファイル、ソケット、パイプ、デバイス)を識別する小さな整数。
この番号は、カーネルがプロセスごとに持つテーブルの添字である。起動時に3つが必ず埋まっており、0が標準入力、1が標準出力、2が標準エラー出力だ。次の open() は空いている最小の番号を受け取り、シェルはこの性質を利用してストリームを付け替える。
Unix の「すべてはファイル」とは、実際にはすべてがファイルディスクリプタだということだ。同じ read() と write() が、テキストファイルにもネットワーク接続にも使える。プロセスごとの上限は ulimit -n で決まり、too many open files は忙しいサーバーで最もよくある本番障害の一つである。ほぼ例外なく、誰かが閉じ忘れたのが原因だ。