paralel programok esetén terminál stdin és stdoutja hogyan?

Sajnos segítséget kell kérnem, én és az internet nem interaktív fele nem boldogulunk.

Van egy amőba szerű játékom pascalban írva, inkább csak a binárisa. CLI-ben futtatható (x nélküli ssh-n keresztül is akár) én meg multiplayert szeretnék hozzá írni. Első nekigondolásra odáig jutottam, hogy meg lehet csinálni kizárólag az in- és outputok basztatásával.

Egy ideiglenes megoldásom már van, működni működik, csak a használhatóságot még nem tudja a drága miaz, jelenleg külön terminálban van egyrészt az irányítás:

client.sh
stty -icanon -echo
cat > /tmp/fl

másrészt a display és a program maga
display.sh

tail -f /tmp/fl | /scratch/opt/fl/fl //fl a program neve

(igen, jól látszik, ha mindkét játékos elindítja ugyanazt a programot, és ugyanazt a bemenetet köti elé, és reménykedi, hogy nem fognak elcsúszni. Akkor fejenként két terminállal már működik)

Ezt szerettem volna valami olyasmire cserélni, hogy ez a kettő script parancs fut egyszerre, egy terminálban, valahogy így: display.sh & client.sh. Persze ebben az esetben a második folyamat kapja meg az inputot és az outputot is. Nem tudja valaki hogy hogyan úgy több programot indítani, hogy az egyikben legyen a terminál inputja, a másikban az outputja? Illetve ezt minél többféle módon, mert
a problémám másik fele, hogy a sima /scratch/opt/fl/fl > `tty` valamiért nem működik a program esetében, pedig más programok tudják a stdoutot ugyanabba a terminálba irányítani, és a fl is tudja más pts-be, csak a saját terminálába nem. (ezt a részét még jobban ki kell figyelnem)

Esetleg egy másik megoldása lehetne, ha a stdoutot úgy le tudnám másolni és ágaztatni, hogy a szép formázások megmaradjanak. Ekkor elég lenne csak egy programot indítani, és a kimenetelét ráküldeni két terminálra. Nem ismer valaki valami módszert, hogy a program kimenetelét megduplázza? Próbáltam tee-vel, de pl a színek és a sortörések elvesztek. (mondjuk azt sem tudom lehetséges-e, vagy hogy a szép formázásokat egyáltalán a stdoutra küldi-e, vagy az adott terminált formázza. Mondjuk abból kiindulva, hogy más terminálba szépen megy a program képe, csak sajátba nem tud, logikai inkonzisztenciára kell gyanakodnom).

Hozzászólások

na jó, így sem működik, sehogy sem működik

Ha a szinek elvesztek, vagyis az ANSI szinkodokat nem kopi a progi, az azt jelenti, hogy - okosan egyebkent - futtat isatty(3) hivast, es az alapjan formazza a kimenetet. Hogy a sortoresek is eltuntek, na az mar gaz.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Mindez azt kellene jelentse, hogy egy process szolgál ki két felhasználót? Mindkettő a ugyanannak a processnek a standard inputjára írna, és standard outputjáról olvasna?

oh god.. tmux/screen/dtach nem lenne pont jo erre neked?