Istnieją trzy stoły „File System”: Jest stół deskryptor pliku, który odwzorowuje deskryptory plików (małych liczb) do pozycji otwartej w tabeli plików. Każdy wpis w tabeli otwartego pliku zawiera (między innymi) przesunięcie pliku i wskaźnik do tabeli i-in w pamięci. Oto zdjęcie: http://www.cs.ucsb.edu/~rich/class/cs170/notes/FileSystem/filetable.rich.jpg
Więc nie jest ani tylko wpis w tabeli jeden plik do otwartego pliku nie jest tam tylko po jednej w procesie ... jest jedna za open()
rozmowy i jest on dzielony czy deskryptor pliku jest dup()
ed lub fork()
wyd.
odpowiadając na pytania:
1) Gdy dwie lub więcej procesów otwarcia pliku do odczytu, nie ma wpisu w otwartej tabeli plików za otwarty. Istnieje nawet jeden wpis na otwarty, jeśli proces jeden otwiera plik wiele razy.
2) Pojedynczy wpis to nie utworzony w otwartej tabeli plików dla różnych procesów otwierania tego samego pliku (ale jest tylko jeden wpis w tabeli i-in w pamięci).
3) Jeśli plik1.txt jest otwierany dwukrotnie, w tym samym lub w dwóch różnych procesach, istnieją dwa różne wpisy w tabeli otwartych plików (ale tylko jeden wpis w tabeli i-węzłów w pamięci).
Dup z http://stackoverflow.com/questions/4277289/are-file-descriptors-shared-when-forking –
Sir jak może być to duplikat? pyta o rodzicielskie dziecko i widelec, moje pytanie jest inne – Alfred