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).
- 7909 megtekintés
Hozzászólások
na jó, így sem működik, sehogy sem működik
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
pontosan. Ezt hívják szervernek :) Ha egyetlen processz szolgálna ki két-két hozzá csatlakozó processzt.
A bemeneti oldal már kész van, a tail -f jó, de a kimenet még nem stimmel.
Puppy linux felhasználó
- A hozzászóláshoz be kell jelentkezni
Van annak oka, hogy mindezt nem named pipe-okkal oldod meg?
- A hozzászóláshoz be kell jelentkezni
nem értek hozzá, nem tudom az alternatívákat, az internetet túrva ezt találtam *vállrándít
azzal kb hogy nézne ki a felhasználók/processzeik közti kommunikáció?
Puppy linux felhasználó
- A hozzászóláshoz be kell jelentkezni
Ízelítőül ilyesmi (az ellenőrzések csaknem teljes mellőzésével):
http://hostcode.sourceforge.net/view/781
http://hostcode.sourceforge.net/view/782
- A hozzászóláshoz be kell jelentkezni
Nem ezt hívják szervernek, de mindegy;) Az input legyen egy NamedPipe, arra bárhányan írhatnak (annyi nehezítéssel, hogy időnként EOF-ot kapsz, azt ignorálni kell):
- A hozzászóláshoz be kell jelentkezni
oh god.. tmux/screen/dtach nem lenne pont jo erre neked?
- A hozzászóláshoz be kell jelentkezni