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.