Laboratorium 2 
==============
Synchronizacja i komunikacja procesow za pomoca lacz nienazwanych
-----------------------------------------------------------------
Lektura podstawowa: Rochkind, rozdz. 6.2 i 6.3  
                    Stevens, rozdz. 2.3 i 3.4

Lektura uzupelniajaca: Bach 7.1

1. Kompilacja: wywolaj program `make'
2. Uzytkowanie: uruchamianie programow
3. Pliki:

   err.h
        Plik naglowkowy biblioteki obslugujacej bledy.

   err.c
        Biblioteka obslugujaca bledy.

   parent_pipe.c
        Tworzy proces, ktory ma wykonac program "child_pipe".  Proces 
        macierzysty komunikuje sie z nim za pomoca lacza, do ktorego pisze
        krotki komunikat.
        Wazne funkcje systemowe:
		pipe - tworzy lacze
		write - pisze do lacza/pliku
		read - odczytuje z lacza/pliku
		close - zamyka lacze/plik
        Porownaj synchronizacje i komunikacje procesow przy pomocy potokow 
	na poziomie interpretatora polecen - uruchom kilka potokow, sprawdz
	jakie procesy dzialaja. 

   child_pipe.c
        Czyta komunikat z deskryptora, ktory jest wskazany przez jedyny 
        argument wywolania programu.

   parent_dup.c
        Wywolanie: parent_dup <command> [<arg_1> ... <arg_n>]
        Tworzy nowy proces, ktory ma wykonac polecenie z argumentami 
        <arg_1> ... <arg_n>.  Proces macierzysty pisze (za pomoca lacza)
        krotki komunikat na standardowe wejscie procesu potomnego.
	Funkcje:
		dup - powiela deskryptor pliku na najnizszy dostepny deskryptor
                dup2 - powiela deskryptor pliku na zadany deskryptor, ktory 
                       zamyka w razie potrzeby

        Przyklady wywolan:
                parent_dup cat
                parent_dup grep from
                parent_dup grep ludziska
                parent_dup wc
                parent_dup mail `whoami`
