Unix núcleo representa los archivos abiertos utilizando tres estructuras de datos: Descriptor table
, File table
, y v-node table
.
Cuando un proceso abre un archivo dos veces, obtiene dos descriptores diferentes en el descriptor table
, dos entradas en el file table
(para que tengan diferentes posiciones en el mismo archivo), y ambos apuntan a una entrada en el v-node table
.
Y el proceso hijo hereda el proceso principal descriptor table
, por lo que kernel mantiene un descriptor table
para cada proceso, respectivamente. Pero dos descriptores de procesos diferentes apuntan a la misma entrada en open file table
.
Así
descriptor de archivo desde distintos puntos de proceso a la misma entrada en la tabla de archivos abiertos
- Cuando el proceso hijo hace algunos leen en el archivo, sería el desplazamiento del mismo cambio en el archivo de proceso padre?
- Si 1 es verdadero, para dos procesos, ¿existe una manera conveniente de obtener el mismo efecto de
fork
en el mismo archivo? Eso significa que dos procesos comparten una información de posición (desplazamiento) en el mismo archivo. - Hay una forma de bifurcar para que ambos procesos tengan tablas totalmente no relacionadas, como dos procesos no relacionados solo que abren los mismos archivos.