SWI015

Odeslat odpověď

Smajlíci
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode je zapnutý
[img] je zapnutý
[flash] je vypnutý
[url] je zapnuté
Smajlíci jsou zapnutí

Přehled tématu
   

Rozšířit náhled Přehled tématu: SWI015

SWI015

od Vlad » 22. 9. 2008 22:43

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.

Nahoru