Creo que es en gran parte por razones históricas.
Un descriptor de archivo de Unix es un pequeño int
valor, devuelto por funciones como open
y creat
, y se pasa a read
, write
, close
, y así sucesivamente.
Al menos en las primeras versiones de Unix, un descriptor de archivo era simplemente un índice en una matriz de estructuras de tamaño fijo por proceso, donde cada estructura contiene información sobre un archivo abierto. Si recuerdo correctamente, algunos sistemas tempranos limitaron el tamaño de esta tabla a 20 más o menos.
Los sistemas más modernos tienen límites más altos, pero han mantenido el mismo esquema general, en gran parte por inercia.