c.Shell-ul

Сделай свою wap-шпаргалку =) попробуй конструктор сайтов http://www.panweb.com/


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г.