Descriptor de archivo

En informática , un descriptor de archivo es una clave abstracta para acceder a un archivo (es un número entero).

Este término se usa generalmente para los sistemas operativos POSIX .

En la terminología de Microsoft Windows y en el contexto de la biblioteca stdio.h , se prefiere el término identificador de archivo , aunque técnicamente es un objeto diferente ( ver más abajo ).

Explicaciones

En POSIX, un descriptor de archivo es un número entero , y más específicamente en el lenguaje C , un número entero de tipo int .

Hay tres descriptores de archivos POSIX estándar para cualquier proceso que no sea un demonio  :

Nombre completo apellido Constante (unistd.h) Flujo
0 Entrada estándar STDIN_FILENO stdin
1 Salida estándar STDOUT_FILENO stdout
2 Error estándar STDERR_FILENO stderr

Normalmente, un descriptor de archivo es un índice de una entrada en el kernel residente, una estructura de datos que contiene los detalles de todos los archivos abiertos.

En POSIX, esta estructura de datos se denomina tabla descriptiva de archivos. Y cada proceso tiene su propia tabla de descriptores de archivos. La aplicación del usuario pasa la clave abstracta al kernel con una llamada al sistema y el kernel accederá al archivo usando esta clave. La aplicación no puede leer ni escribir directamente la tabla de descriptores de archivos.

En un sistema Unix, los descriptores de archivo pueden hacer referencia a archivos, directorios , dispositivos de bloque o caracteres (a menudo llamados archivos especiales), canalizaciones con nombre o canalizaciones anónimas.

manejador de archivos

El identificador de archivo FILE * de la biblioteca C de entrada / salida estándar es técnicamente un puntero a una estructura de datos administrada por las rutinas de esta biblioteca. En los sistemas Unix, una de estas estructuras incluye un descriptor de archivo para el objeto en cuestión. Dado que el nombre del identificador de archivo se refiere a esta capa adicional, no es intercambiable con el del descriptor de archivo .

Para complicar aún más la terminología, Microsoft Windows también usa el término identificador de archivo para denotar construcciones de bajo nivel, es decir, descriptores de archivos POSIX. Las bibliotecas de Microsoft C también proporcionan funciones de compatibilidad que "envuelven" estos identificadores nativos para admitir las convenciones de descriptores de archivos "similares a POSIX" como se describe anteriormente.

Operaciones en descriptores de archivos

Unix moderno normalmente proporciona las siguientes operaciones en descriptores de archivos.

Llamadas al sistema para crear descriptores de archivosOperaciones de descriptor de archivo únicoOperaciones en varios descriptores de archivosOperaciones de la tabla de descriptores de archivosOperaciones que cambian el estado del procesoBloqueo de archivosEnchufesDiverso

Descriptores de archivo y capacidad

Los descriptores de archivos de Unix son capacidades . Se pueden pasar entre procesos en sockets del dominio UNIX con la llamada al sistema sendmsg ().

Un ejemplo de lista C es una tabla de descriptores de archivos Unix .

Ver también