Do spisu treści tematu 6
 

6.5.6 Duplikacja deskryptora pliku - funkcja dup()

Spis treści


Opis

Dla każdego procesu w jądrze systemu pamiętana jest tablica zawierająca wskaźniki do struktur file - "tablica deskryptorów plików". Poprzez indeksy tej tablicy procesy odwołują się do plików, wykonują na nich operacje. Instancja pliku (plik po otwarciu) utożsamiany jest więc przez użytkownika z jego deskryptorem. Jest to część wirtualnego systemu plików, jakim Linux oddziela moduł "fs" od reszty jadra i programistów. Dzięki temu wszystkie fizyczne systemy plików (ext2, vfat, msdos) sa postrzegane na zewnątrz modułu "fs" w ten sam sposób.

Funkcja dup ma za zadanie wykonać kopię deskryptora pliku wskazanego przez użytkownika. Otrzymuje indeks do tablicy plików i zwraca nowy indeks, przepisując w nowe miejsce tablicy wartość wspomnianego wskaznika do struktury file z miejsca starego. Gwarantowane jest, że zostanie znaleziony najmniejszy możliwy taki indeks.
Funkcja dup2 działa podobnie, tyle, że można zażądać miejsca, do którego stary deskryptor ma być skopiowany.
Obie te funkcje korzystają z funkcji narzędziowej dupfd.

Zastosowania funkcji dup wydają się ubogie. Jedynym nietrywialnym znanym mi zastosowaniem jest wykorzystanie funkcji dup przy przedefiniowywaniu standardowych kanałów wejścia, wyjścia i diagnostycznego (deskrypotory 0, 1 i 2).


Algorytm

Wejście: Wyjście: Algorytm:

Bibliografia


Autor: Robert Dabrowski