File descriptor

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.

De eerste drie

Elk proces start met drie standaard file descriptors:

NummerNaamDoel
0stdinInvoer
1stdoutNormale uitvoer
2stderrFoutmeldingen

Elke volgende open() krijgt het laagste vrije nummer: 3, 4, enzovoort.

Bekijken en begrenzen

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.

Zie ook

linuxprocessen