Een file descriptor is een nummer waarmee een proces een geopend bestand aanspreekt. Omdat op Linux bijna alles een bestand is, wijst een file descriptor net zo goed naar een netwerkverbinding, pipe of apparaat als naar een gewoon bestand.
Elk proces start met drie standaard file descriptors:
| Nummer | Naam | Doel |
|---|---|---|
| 0 | stdin | Invoer |
| 1 | stdout | Normale uitvoer |
| 2 | stderr | Foutmeldingen |
Elke volgende open() krijgt het laagste vrije nummer: 3, 4, enzovoort.
De geopende file descriptors van een proces zijn zichtbaar als symlinks in /proc/PID/fd/:
ls -l /proc/$$/fd # file descriptors van de huidige shell
lsof -p 1234 # geopende bestanden van proces 1234
ulimit -n # maximum aantal per proces
Het maximum per proces (vaak 1024) is een klassieke bron van de fout "Too many open files" bij drukke servers — een proces dat descriptors opent maar nooit sluit, lekt ze tot de limiet bereikt is.