Cada proceso tiene su propia tabla de descriptores de archivos. El descriptor de archivo 4 en el proceso 1234 puntos dentro de la tabla del proceso 1234. El descriptor de archivo 4 en proceso 5678 puntos dentro de la tabla del proceso 5678. Un caso con el que debe estar familiarizado son los descriptores de archivo 0, 1 y 2, que para cada proceso son la entrada estándar, la salida estándar y el error estándar, apuntando a donde se redirigieron.
Un proceso puede abrir el mismo archivo más de una vez. Esto puede suceder casualmente, por ejemplo, cuando la salida estándar y el error estándar de un proceso se redirigen al mismo terminal o al mismo archivo. Las entradas de la tabla de archivos subyacentes (por ejemplo, Linuxstruct file
) contienen más que información sobre el archivo; También contienen modos de apertura (por ejemplo, lectura o escritura) y otro estado (como banderas, por ejemplo, close-on-exec). Por ejemplo, un proceso puede tener un terminal abierto para leer solo en el descriptor de archivo 0 y ese mismo terminal abierto para escribir solo en el descriptor de archivo 2. Las entradas de las tablas de archivos también contienen la posición del proceso en el archivo; un proceso puede querer tener lseek
dos posiciones diferentes en el mismo archivo, y así lo usaría dup
para obtener dos identificadores para ese archivo.
4
en ambos procesos es relativo a su propio número de fd abiertos. Los Fd0-2
(stdin, stdout, sdterr) siempre se abren para un nuevo proceso y los números no están reservados solo para ese proceso.