Linux FAQ's & Manuals

do spisu tresci tematu 6

3.2.3 funkcja systemowa dup()




spis tresci


wprowadzenie

funkcja dup() tworzy duplikat istniejacego deskryptora pliku i przekazuje numer nowego deskryptora zwiazanego z tym samym plikiem lub laczem. oba deskryptory dziela ten sam wskaznik do tablicy plikow. funkcja gwarantuje zwrot dostepnego deskryptora pliku o najnizszym numerze.poniwaz oba deskryptory wskazuja na ten sam plik jedyna korzysc jaka mozna czerpac z zastosowanuia funkcji dup() jest taka ,ze deskryptory maja rozne numery.pozwala to np. zmieniac standardowe lacza do pisania,czytania lub wyjscie na blad.

spis tresci.


algorytm funkcji

 definicja: int dup(int oldfd)   wynik: 0  w przypadku sukcesu oraz na zmiennej stat_buf zapisuje status pliku          -1  w przypadky bledu oraz na zmiennej errno:                                    ebadf  (bledny numer pliku)                                    emfile (za duzo otwartych plikow)                                                                    
argumentem funkcji jest deskryptor pliku,ktory chcemy zduplikowac.
 implementacja funkcji: {  sprawdz legalnosc deskryptora oldfd(tzn. czy nie jest wiekszy  od 256 oraz czy wskazyje na jakis plik);     znajdz pierwszy wolny deskryptor w tablicy deskryptorow plikow uzytkownika;   skopiuj deskryptor oldfd do znalezionej pozycji;   w tablicy plikow zwieksz o 1 licznik dowiazan z tablicy deskryptorow;    zwroc znaleziony deskryptor; } 

spis tresci.


bibliografia

  1. pliki zrodlowe linuxa:
  2. maurice j. bach: budowa systemu operacyjnego unix - rozdial 5.11
  3. marc j. rochkind: programowanie w systemie unix dla zaawansowanych

spis tresci.


autor: piotr dada