[linux] Rura obojsmerna

Ondrej Jombik nepto na pobox.sk
Neděle Duben 20 16:37:45 CEST 2003


> -> Da sa spravit nieco take, ze prepojim dva programy (shelowske scripty)
> -> rurou a to tak,
> -> ze vyspup pogramu A ide na vstup programu B a vystup programu B ide na
> -> vstup programu A ?
> -> A ak ano tak ako?
> shellovskym skriptom tazko, v C to samozrejme ide. zavolas dvakrat
> pipe(), fork()nes, nastavit v oboch stdin/stdout (teda, ako
> potrebujes)

Toto je oficialny pristup, ktory funguje. Ja som svojho cas potreboval
pospustat lubovolne vela aplikacii a poprepajat im lubovolne vstupy
a vystupy. Kedze som nenasiel schodne riesenie na vsetky mozne pripady,
ako temu svojho rocnikoveho projektu som si zvolil aplikaciu, ktora to
bude riesit.

ep: extended pipelining

    ep is a pipeline connector. For most of UNIX user there was a time
    they wanted to bend the pipe (ie. make a bidirectional pipe) which
    could render many problems to a simple tasks of creating modules.

    ep is mostly used for creating a communication tree between several
    programs which communicate trhough STDIN, STDOUT and STDERR
    pipelines. ep supports cyclic pipelining (A -> B,  B -> A) between
    processes thus standing for a powerful tool for creating
    script-based modular projects.

Bol som si isty, ze sa urcite najde na svete clovek s rovnakym
problemom, tak som hodil o tom zmienku na web [1]. Nikdy som ale
nenabral odvahu releasnut balik. Ty si ma vsak svojim problemom normalne
inspiroval ;-), takze som doladil nejake veci, a uz je to mozne aj
stiahnut [2].

Na kompilaciu a spustenie je nutna kniznica libcfg+ [3], ku ktorej
poslednej 0.6.1 verzii mame dostupne zdrojaky, Debian aj RPM baliky.

Ju taktiez nutne upozornit nato, ze tento softver zatial nevie
workaroundovat (uzasne slovo ;-) rozne bugy v Linuxovom jadre resp.
v samotnom glibc (je na polemiku, ci to vlastne bugy su). Aby som bol
presnejsi, skuste si v lubovolnom shelli toto:

    $ rev | cat

Nebude to fungovat, resp. vystup nedostanete az kym nestlacite Ctrl+d.
Naproti tomu toto paradoxne fungovat bude:

    $ cat | cat

Len pre uplnost, za spravne spravanie povazujem to druhe, nie to prve.
A viem presne preco to tak je, ale to uz presahuje ramec tohto e-mailu.
Good luck! ;-)

[1] http://platon.sk/projects/ep/
[2] http://platon.sk/projects/release_list_page.php?project_id=1
[3] http://platon.sk/projects/release_list_page.php?project_id=3

--
  _/|   Ondrej Jombik - nepto na php.net - http://www.nepto.sk - OJ812-RIPE
 <_  \  Platon SDG - open source software development - http://platon.sk
   `\|  UNIX is user friendly. It's selective about who its friends are!
    '`



Další informace o konferenci linux