SWI015

Programování v UNIXu. Cvičení probíhá v laboratoři UNIX a poskytuje posluchačům průpravu v programování v jazyce C v prostředí UNIX.
Vlad

SWI015

Příspěvek od Vlad »

Zkouška 2008-09-22
ZADANI
XTIMEOUT=<vteriny> XSIZE=<bajty> ./a.out <jméno spustitelného souboru>
Jinými slovy, v proměnných prostředí dostanete timeout a size, pokud nejsou tak timeout=11 size=10. Úkolem vašeho programu je udělat fork a spustit v synovském procesu daný spustitelný soubor. Otec čte svůj stdin do bufferu o velikosti size a každých timeout vteřin přepisuje obsah bufferu do roury, ze které čte syn (spuštěný soubor). Pokud nastane timeout dřív než se naplní buffer, vypíše na stderr "[TIMEOUT]". Jinak přepisuje do roury při naplnění bufferu. size není nijak omezeno - je třeba si buffer naaolkovat, nejde použít statický.

$ while : ; do printf 1; sleep 1; done | XTIMEOUT=4 XSIZE=5 ./a.out /bin/cat
[TIMEOUT]1111[TIMEOUT]1111[TIMEOUT]1111

$ while : ; do printf 1; sleep 1; done | XTIMEOUT=5 XSIZE=3 ./a.out /bin/cat
111
#každé tři vteřiny se objeví nové 3 jedničky (naplní se buffer, timeout nenastane)

Je to jedno z těch zdlouhavých zadání, kdy musíte pochopit, co tím chtěl autor říct, než začnete kódit. Do poloviny času mi to fungovalo jen přibližně, než mi došlo co se má opravdu dělat.
Odpovědět

Zpět na „SWI015 Programování v Unixu“