Patryk Czarnik
Zadanie 1

Program nalezy wywolywac poleceniem fibb N, gdzie N jest argumentem i ma
byc liczba calkowita, program policzy liczbe F(N) (przy zalozeniu, ze
F(0)=F(1)=1). Pierwszy proces zwraca wynik, jesli N=0 lub N=1, w przeciwnym
przypadku wywoluje funkcje wywolajPodproces (z modulu fibb_ogolne.c).
Funkcja ta tworzy nowy proces i daje mu kod programu fibb_synek wywolanego
z odpowiednimi parametrami. Funkcja ta przekazuje wyniki czesciowe do syna
i wnuka procesu wywolujacego ja. Funkcja poprzez parametry programu przekazuje
tez numery deskryptorow:
 - ktorym nowy proces ma czytac od dziadka
 - ktory nowy proces ma przekazac dalej, a dopiero jego syn bedzie z niego czytal.
Poniewaz proces 2 nie ma dziadka, proces 1 musi go "udawac". Dlatego przed
wywolaniem funkcji wywolajPodproces w fibb.c tworzone jest lacze fdNaNiby,
do ktorego wpisywany jest wynik F(0).

W kolejnych procesach (tych z kodem fibb_synek) odczytywane sa czesciowe wyniki
od ojca i dziadka, obliczany jest nowy wynik. Sprawdzane jest, czy liczba
jest juz policzona, jesli tak wypisywany jest wynik; jesli nie, wywolywana
jest funkcja wywolajPodproces, ktora tworzy nastepny podproces i przekazuje mu
odpowiednie parametry.

Parametrami fibb_synek maja byc:
 - numer procesu,
 - argument calej rodziny procesu,
 - numer deskryptora, ktorym mozna czytac od dziadka,
 - numer deskryptora, ktory trzeba przekazac dalej.
 
Komunikacja miedzy ojcem a synem odbywa sie przez przedefiniowane standardowe
we/wyj. Dzieki temu nie trzeba przekazywac kolejnego numeru deskryptora.
Z tego powodu wypiszWynik korzysta z stderr.