Aby uruchomic system wyborow, nalezy wywolac program sekretarz z parametrem
okreslajacym liczbe wyborcow. Sekretarz stworzy wyborcow (funkcjami fork i
execl) i przekaze im jako parametry liczbe wszystkich wyborcow i numer
identyfikacyjny danego wyborcy.
Zarowno w procesie sekretarza, jak i u wyborcow tuz po utworzeniu rezerwowane
sa zasoby: tablica zdolna pomescic numery wszystkich wyborcow i trzy kolejki
komunikatow. Kolejki tworzone sa z flaga IPC_CREAT, a wiec kazda z nich zostanie
utworzona przez jeden z procesow i udostepniona pozostalym. Po zarezerwowaniu
zasobow przejmowanajest obsluga sygnalow przerywajacych dzialanie procesow: we
wszystkich procesach przed wyjsciem zwalniane sa zasoby, a proces sekretarza
najpierw wysyla sygnal SIG_INT do wyborcow (kill z par. -1) i czeka az one
zakoncza dzialanie. Funkcja konczaca dzialanie jest wykonywana po poprawnym
zakonczeniu wyborow albo po przerwaniu wyborow przez uzytkownika (np. ^C).
Jedynym momentem, gdy procesy komunikuja sie za pomoca sygnalow, jest konczenie
dzialania. Zapewni to zakonczenie dzialania takze procesow, ktore wlasnie
staraja sie zapisac cos do pelnej kolejki i sa z tego powodu zablokowane. Aby
funkcja obslugi sygnalu mogla zwolnic zarezerwowane zasoby, zmienne zwiazane z
tymi zasobami sa globalne w obrebie danego pliku. Sa wykorzystywane
bezposrednio jedynie w funkcji main (tak jakby byly to zmienne tej funkcji)
oraz w funkcji obslugi sygnalu (zakoncz_prace, obsluga_sygnalu). Poza tym, w
razie potrzeby, sa przekazywane jako parametry w sposob jawny.

Tablice na pozycji 0 zawieraja liczbe N zapisanych komorek, a na pozycjach
1..N sa zapisane dane. (Rozmiar tablicy to N+1). 

We wszystkich komunikatach typ jest rowny numerowi wyborcy, ktory go wysyla
lub do ktorego jest przeznaczony. Wszystkie komunkaty maja dane zapisane
w jednym polu typu int.

Wyborcy, ktorzy zglosza sie po uplynieciu czasu STARTTIME, beda brali udzial
w kolejnym glosowaniu. Ich zgloszenia pozostana w kolejce zgloszen az do
nastepnego zbierania zgloszen. Gdyby nie byla to osobna kolejka komunikatow,
niewykorzystane zgloszenia moglyby zablokowac kolejke i w zwiazku z tym
glosowanie - powstalby zastoj. Stad osobna kolejka na zgloszenia.
Wyborca, ktory otrzymal liste kandydatow, moze juz glosowac. Jednak sekretarz
nie czyta glosow dopoki nie wysle wszystkim list kandydatow. Glosy wyborcow
moglyby wiec zablokowac kolejke, ktora przesylane sa listy. Stad dwie kolejki:
do wyborcow i do sekretarza.