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