SHPORA.net :: PDA

Login:
ðåãèñòðàöèÿ

Main
FAQ

ãóìàíèòàðíûå íàóêè
åñòåñòâåííûå íàóêè
ìàòåìàòè÷åñêèå íàóêè
òåõíè÷åñêèå íàóêè
Search:
Title: | Body:

a.Apel sist dup

Apelul sistem dup copiazã un descriptor de fi?ier în primul slot (intrare) liber din UFDT, returnând utilizatorului noul descriptor. Apelul poate fi folosit pentru toate tipurile de fi?iere. Este utilizat în construcÞia programelor complexe pornind de la programe mai simple (vezi capitolul 7, construirea pipeline-urilor shell ). Sintaxa apelului este:
fd_nou = dup(fd);
unde fd este descriptorul de fi?ier corespunzãtor ce va fi duplicat, iar fd_nou este noul descriptor care va referi fi?ierul. Contorul intrãrii din GFT corespunzãtoare lui fd va fi incrementat, deoarece ?i intrarea din UFDT a lui fd_nou va pointa cãtre aceea?i intrare în GFT.--Examinând, de exemplu, stucturile de date prezentate în figura 5.20 reies urmãtoarele: un proces a deschis fi?ierul "/etc/passwd" (descriptor 3), apoi fi?ierul "local" (descriptor 4), ?i încã odatã fi?ierul "/etc/passwd" (descriptor 5). În final a fost duplicat descriptorul 5 apelând dup care a returnat descriptorul 6.

#include <fcntl.h>
^main()
{
^ int i,j;
^ char buf1[512], buf2[512];
^ i = open("/etc/passwd", O_RDONLY);
^ j = dup(i);
^ read(i, buf1, sizeof(buf1));
^ read(j, buf2, sizeof(buf2));
^close(i);
^read(j, buf2, sizeof(buf2));
}