Ci sono tre "tavoli di file system": c'è un tavolo descrittore di file che associa descrittori di file (piccoli interi) alle voci della tabella dei file aperti. Ogni voce nella tabella dei file aperti contiene (tra le altre cose) un offset di file e un puntatore alla tabella di inode in memoria. Ecco una foto: http://www.cs.ucsb.edu/~rich/class/cs170/notes/FileSystem/filetable.rich.jpg
Quindi non v'è né giusta voce della tabella di un file per un file aperto né v'è una sola per ogni processo ... c'è uno per open()
chiamata, ed è condiviso se il descrittore di file è dup()
cata o fork()
ed.
rispondere alle vostre domande:
1) Quando due o più processi aprire un file per la lettura, c'è una voce nella tabella di file aperto per aprire. C'è anche una voce per open se la procedura one apre il file più volte.
2) Una voce singola è non creata nella tabella di file aperti per processi diversi che aprono lo stesso file (ma c'è una sola voce nella tabella di inode in memoria).
3) Se file1.txt viene aperto due volte, nello stesso o in due processi diversi, vi sono due diverse voci di tabella di file aperte (ma una sola voce nella tabella di inode in memoria).
fonte
2013-01-07 04:51:48
Dup di http://stackoverflow.com/questions/4277289/are-file-descriptors-shared-when-forking –
Sir come può essere questo un duplicato? sta chiedendo informazioni su genitore figlio e fork, la mia domanda è diversa – Alfred