# SWI015

<{ForumPost(poster="Vlad", timestamp=2008-09-22 22:43:46)}>
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.
<{/ForumPost}>

