Kako funkcioniraju pipeovi?
moje shvacanje na primjeru:
ls|more
1) ls spreman poslati podatke
2) ls to nekako i objavi i ceka more da ih primi
3) more primi paket podataka (1024 bytea ako sam dobro shvatio)
3b) more doznaci ls-u da moze dalje slati
4) more ih procesira
4b) goto 1)
Efektivno, prvo ls objavi da moze slati i onda se more javi da moze primiti pa to i ucini. Sa ls|more nema problema, al:
wget http://nesto -O -|mpg123 -
1 kb je cak i sa vrlo dobrom vezom jaako mali buffer za jednu operaciju koja trazi feeding u realnom vremenu i drugu koja salje varirajucom brzinom
Ideja? Naci ili napraviti (buduci da ga nisam nasao) program koji najprije primi npr 1MB podataka u neki /tmp/ fajl ili u v.m.
npr.
wget http://nesto -O -|hipotetskiprog --buf=1024kb| mpg123 -
1) wget javi hipotetskom progu da moze poslati 1kb
2) hipot. prog. kaze primio i kaze wgetu salji jos
2b) ako buffer pun ili je input pipe prazan vise od 1 sekunde (postoji li nekakav EOF marker na kraju pipea?) javi mpg123 da moze primiti podatke
3) dalje se mpg123 dogovara sa hipot.progom za nove podatke dok hipotprog puni buffer onoliko brzo koliko mu wget salje i kaze wgetu da se strpi ako je buffer pun
Shell skripta, je, cini mi se, out of tha question. S druge strane C prog mi djeluje kao suvise komplikacije. Perl? Osobno, jaako sam malo radio sa njime i zanima me da li je on sposoban razgovarati sa pipeom na nacin na koji sam si ja to zamislio i, ako netko ima ideju, kako bi se to izvelo?
_________________
Pupoljak nije negiran. Rekao sam to i ponovit cu to jos jedanput. Pupoljak NIJE negirAn.
MADD
(Mothers Against Dirty Dialectics)
Based on a true story. NOT.
Ko ih sljivi, mi sviramo punk
