Unix rappresenta i file aperti con tre strutture dati: Descriptor table
, File table
e v-node table
.
Quando un processo apre un file due volte, ottiene due diversi descrittori nello descriptor table
, due voci nello file table
(in modo che abbiano posizioni diverse nello stesso file) e entrambi puntano a una voce nello v-node table
.
E il processo figlio eredita il processo padre descriptor table
, quindi il kernel mantiene uno descriptor table
rispettivamente per ciascun processo. Ma due descrittori di processi diversi indicano la stessa voce in open file table
.
Così
Due descrittore di file da diversi punti processo per la stessa voce nella tabella dei file aperti del kernel
- Quando il processo bambino fa qualche lettura sul file, sarebbe l'offset della stessa modifica file in processo genitore?
- Se 1 è vero, per due processi, c'è un modo conveniente per ottenere lo stesso effetto di
fork
sullo stesso file? Ciò significa che due processi condividono le informazioni sulla posizione (offset) sullo stesso file. - C'è un metodo di fork in modo che entrambi i processi abbiano tabelle totalmente non correlate, come due processi non correlati solo che hanno aperto gli stessi file.