Navrhnúť a implementovať v ANSI C pod OS Linux program, ktorý beží ako jeden proces a robí paralelne nasledujúce veci:
1. Do štandardného výstupu (stdout) píše v pravidelných časových intervaloch (napr. po každej uplynutej desatine sekundy) reálny čas. Reálny čas je reprezentovaný ako desatinné číslo, ktoré zodpovedá sekundám uplynutým od spustenia programu (napr. 0.1, 0.2, 0.3, ...).
2. Číta zo štandardného vstupu (stdin) vopred neohraničenú (nie nutne rastúcu) postupnosť desatinných čísiel, ktoré definujú časy alarmov, napr. 2.0, 4.1, 0.001, 3.7, 0.05.
3. Obsluhuje alarmy prečítané zo štandardného vstupu, t.j. po uplynutí času niektorého alarmu vypíše na štandardný výstup (stdout) reťazec (N, T, D), kde N je poradové číslo alarmu vo vstupnej postupnosti (celé číslo), T je čas definície alarmu vo vstupnej postupnosti (desatinné číslo), D je rozdiel medzi časom obsluhy alarmu a časom T (nezáporné desatinné číslo).
Každý alarm zo stdin bude niekedy prečítaný a bude niekedy obslúžený.
Žiaden alarm nesmie byť obslúžený skôr než bol prečítaný a než uplynul čas v jeho definícii (napr. alarm s
definovaným časom 2.0 smie byť obslúžený najskôr po uplynutí 2 sekúnd od spustenia programu).
Po prečítaní posledného znaku zo stdin (EOF) a zároveň po obslúžení všetkých alarmov program vypíše
na stream stderr reťazec [N, A, D] s výslednou štatistikou, kde N je počet prečítaných/obslúžených
alarmov, A je priemer rozdielov medzi časmi definície alarmov a časmi ich obsluhy, D je štandardná
odchýlka týchto rozdielov.
Hlavným cieľom (okrem implementácie všetkých funkčných požiadaviek) je minimalizovať sumu (resp.
priemer) rozdielov medzi časmi definície alarmov a časmi ich obsluhy, t.j. minimalizovať hodnotu A vo
výslednej štatistike.
Program má byť parametrizovaný, aby umožňoval jednoduchú zmenu formátov vstupov a výstupov,
granularity reálneho času atď.
Implementácia má používať len štandardné systémové knižnice (POSIX). Kompilácia programu s
gcc -c -ansi -Wall ...
má produkovať 0 errors, 0 warnings.