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).