Fiecare fișier este asociat cu un descriptor de fișiere. [1] Descriptorii fișierelor stdin. stdout și stderr sunt 0, 1 și respectiv 2. Când deschideți fișiere suplimentare, descriptorii de la 3 la 9 rămân neocupați. Uneori descriptorii suplimentari pot servi un serviciu bun, păstrând temporar o referință la stdin. stdout sau stderr. [2] Acest lucru facilitează returnarea descriptorilor la starea lor normală după manipulări complexe cu redirecționare și permutări (a se vedea exemplul 16-1).
Operațiunile de redirecționare și / sau conductele pot fi combinate pe aceeași linie de comandă.
Fluxurile multiple pot fi redirecționate către un singur fișier.
Închiderea descriptorilor de fișiere
Închideți descriptorul fișierului de intrare n.
Închideți descriptorul fișierului de ieșire n.
Procesele copiilor moștenesc descriptorii de fișiere deschiși. Din acest motiv, transportoarele funcționează. Pentru a preveni moștenirea descriptorilor, închideți-le înainte de a rula procesul copilului.
Pentru mai multe informații despre redirecționarea I / O, consultați Anexa E.
Exemplul 16-1. Redirecționarea stdin cu exec
În mod similar, exec> redirectează numele fișierului la stdout la fișierul specificat. După aceea, toate ieșirile din comenzi, care de obicei sunt trimise la stdout. acum apare în acest fișier.
Exemplul 16-2. Redirecționarea stdout cu exec
Exemplul 16-3. Redirecționarea simultană a dispozitivului, stdin și stdout. cu comanda exec