Descriptor de archivo


En Unix y Unix-como sistemas informáticos operativos, un descriptor de archivo ( FD , menos frecuentemente Fildes ) es un identificador único ( mango ) para un archivo u otro de entrada / salida de recursos , tales como un tubo o conector de red .

Los descriptores de archivo suelen tener valores enteros no negativos, y los valores negativos se reservan para indicar "sin valor" o condiciones de error.

Los descriptores de archivo son parte de la API POSIX . Cada proceso Unix (excepto quizás los demonios ) debe tener tres descriptores de archivo POSIX estándar, correspondientes a los tres flujos estándar :

En la implementación tradicional de Unix, los descriptores de archivos se indexan en un proceso por tabla de descriptor de archivos mantenida por el kernel, que a su vez indexa en una tabla de archivos abiertos por todos los procesos en todo el sistema, llamadatabla de archivos . Esta tabla registra elmodocon el que se abrió el archivo (u otro recurso): para leer, escribir, agregar y posiblemente otros modos. También indexa en una tercera tabla llamadatabla de inodoque describe los archivos subyacentes reales. [3] Para realizar entrada o salida, el proceso pasa el descriptor de archivo al kernel a través de unallamada al sistema, y el kernel accederá al archivo en nombre del proceso. El proceso no tiene acceso directo al archivo o tablas de inodo.

En Linux , se puede acceder al conjunto de descriptores de archivos abiertos en un proceso en la ruta /proc/PID/fd/, donde PID es el identificador del proceso .

En sistemas similares a Unix, los descriptores de archivos pueden hacer referencia a cualquier tipo de archivo Unix nombrado en un sistema de archivos. Además de los archivos normales, esto incluye directorios , dispositivos de bloques y caracteres (también llamados "archivos especiales"), sockets de dominio Unix y canalizaciones con nombre . Los descriptores de archivos también pueden hacer referencia a otros objetos que normalmente no existen en el sistema de archivos, como tuberías anónimas y sockets de red .


Descriptores de archivo para un solo proceso, tabla de archivos y tabla de inodo . Tenga en cuenta que varios descriptores de archivos pueden hacer referencia a la misma entrada de la tabla de archivos (p. Ej., Como resultado de la llamada al sistema dup [3] : 104  ) y que varias entradas de la tabla de archivos pueden, a su vez, hacer referencia al mismo inodo (si se ha abierto varias veces; la tabla todavía está simplificada porque representa inodos por nombres de archivo, aunque un inodo puede tener varios nombres ). El descriptor de archivo 3 no hace referencia a nada en la tabla de archivos, lo que significa que se ha cerrado.