SHPORA.net :: PDA

Login:
đĺăčńňđŕöč˙

Main
FAQ

ăóěŕíčňŕđíűĺ íŕóęč
ĺńňĺńňâĺííűĺ íŕóęč
ěŕňĺěŕňč÷ĺńęčĺ íŕóęč
ňĺőíč÷ĺńęčĺ íŕóęč
Search:
Title: | Body:

c.Shell-ul

Codul arată cum shell-ul ar trata o linie de comandă cu o singură conductă (pipe), ca de exemplu:
^ls -l|wc
--După ce procesul părinte apelează fork ?i crează un proces fiu, fiul crează o conductă de tip pipe. Procesul fiu execută fork; el ?i fiecare fiu al său tratează fiecare câte o componentă a liniei de comandă. Procesul fiu (mai mare) creat prin al doilea fork execută prima componentă a comenzii (ls): scrie în conductă, a?a că închide descriptorul de fi?ier de ie?ire standard, duplică descriptorul de scriere al conductei ?i închide descriptorul original de scriere al conductei în momentul când nu mai este necesar. Părintele (wc) ultimului proces fiu (ls) este fiul procesului shell original. Acest proces (wc) închide propriul fi?ier de intrare standard ?i duplică descriptorul de citire al conductei făcându-l să devină propriul descriptor de fi?ier de intrare standard. Apoi închide descriptorul de citire al conductei originale pentru că nu mai are nevoie de el ?i execută a doua componentă a comenzii din linia de comandă originală. Cele două procese care execută linia de comandă, o execută asincron ?i ie?irea unui proces este intrare pentru celălalt proces. Procesul shell între timp a?teaptă pentru ca procesul său fiu (wc) să iasă (exit), apoi procedează în mod uzual: întreaga linie de comandă este apelată atunci când procesul wc iese. Shell-ul face o buclă ?i cite?te următoarea comandă.