CATEGORII DOCUMENTE |
Apelul sistem dup - UNIX
Apelul sistem dup copiaza un descriptor de fisier in primul slot (intrare) liber din tabela descriptorilor de fisier utilizator, returnand utilizatorului noul descriptor. Apelul poate fi folosit pentru toate tipurile de fisiere. Este utilizat in constructia programelor complexe pornind de la programe mai simple (vezi capitolul 7, construirea pipeline-urilor shell ). Sintaxa apelului este:
fdInou = dup(fd);
unde fd este descriptorul de fisier care va fi duplicat, iar fdInou este noul descriptor care va referi fisierul. Contorul intrarii din tabela de fisiere corespunzatoare lui fd va fi incrementat, deoarece si intrarea din tabela descriptorilor de fisier utilizator a lui fdInou va pointa catre aceeasi intrare in tabela de fisiere.
Examinand, de exemplu, structurile de date prezentate in figura 5.20 reies urmatoarele: un proces a deschis fisierul '/etc/passwd' (descriptor 3), apoi fisierul 'local' (descriptor 4), si inca odata fisierul '/etc/passwd' (descriptor 5). In final a fost duplicat descriptorul 3 apeland dup care a returnat descriptorul 6.
5.20 Structurile de date dupa apelul sistem dup
#include <fcntl.h>
main()
Figura 5.21 Program C in care este folosit apelul dup
In programul din figura 5.21 variabila i contine descriptorul de fisier returnat la deschiderea fisierului '/etc/passwd', iar variabila j pe cel obtinut prin duplicarea lui i. Ambii descriptori pointeaza catre aceeasi intrare din tabela de fisiere, utilizand deci acelasi deplasament. Astfel, dupa primele doua citiri, buf1 si buf2 vor contine informatii diferite. Procesul poate inchide unul dintre descriptori dar operatiile de I/O pot continua fara probleme prin intermediul celuilalt descriptor.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 815
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved