A4B33OSS: Semestrální práce C2

Vytváření procesů v jazyce C

Cílem této práce je procvičit si základní operace související s vytvářením procesů v jazyce C.

Zadání úlohy

Vytvořte program v jazyce C (nebo C++), který vytvoří dva procesy (funkce fork), které propojí rourou (funkce pipe).
První potomek přesměruje svůj výstup do roury a bude do něj zapisovat dvojice náhodných čísel (funkce rand) oddělené mezerou. Mezi zápisy čísel vložte prodlevu, např. 1 sekundu. První potomek navíc musí ošetřovat signál SIGUSR1 (funkce sigaction) a v případě přijmutí tohoto signálu vypsat řetězec "TERMINATED" na svůj chybový výstup a ukončit se.
Druhý potomek přesměruje výstup roury na svůj standardní vstup, přesměruje svůj výstup do souboru s názvem out.txt (v aktuálním adresáři) a spustí binární soubor (funkce execl) aplikace pro výpočet největšího společného dělitele dvou čísel na vstupu (výsledek úlohy C1).
Rodičovský proces počká 5 sekund a poté pošle signál SIGUSR1 prvnímu procesu (generátoru čísel), což způsobí korektní ukončení obou procesů. Počká na ukončení procesů (funkce wait) a poté se ukončí.

Poznámky k implementaci:

K úloze napište Makefile, který umožní sestavit binární aplikaci. V případě potřeby Makefile zajistí sestavení aplikace pro výpočet největšího společného dělitele v samostatném adresáři.