» »

[linux] tty -> ethernet

[linux] tty -> ethernet

slovencl ::

Rad bi napisal program/driver, ki se bo na zunaj prikazal kot tty, če boš pisal vanj (v ta tty fajl), pa bo pošiljal RAW ethernet pakete, ki jih bi generirqal po določenem ključu.

Me lahko kdo usmeri kako se to naredi. A je to device driver? Najbrž ne, ker bo podatke pošiljal preko socketa (to znam pošiljat). Ne vem pa kako bi naredil ta interface, da se bo pokazal kot /dev/tty_ethernet.

Ribič ::

Uf, za tole nisem ravno prepričan kako bi šlo. Kar si opisal, bi verjetno zahtevalo izdelavo dejanskega gonilnika za teletype napravo (da se sploh prikaže kot /dev/tty*) in nato še gonilnik za Ethernet posebej ter njuna sklopitev. Mar nebi bilo bolje, da izpišeš nek daemon program, ki v ozadju posluša preko kakega UNIX socketa (mogoče se da tudi preko TTY) in potem pošilja pakete preko standardnih omrežnih API-jev npr. UDP?

Lahko malo bolj opišeš kaj točno želiš tule izdelati in koliko možnosti za manevriranje imaš? Če ugibam, si tty izbral zato, ker bi želel skozi njega preusmeriti stdout is nekega command-line programa?

slovencl ::

Z GDB in opcijo "target remote /dev/device" bi rad pisal/bral v ta "moj driver/deamon", ki bi ukaze preoblikoval in pošiljal/sprejemal po mreži.

Če vključiš to opcijo "remote", potem GDB vse svoje ukaze piše v ta device, in jih sprejema z njega. Te ukaze bi rad predelal in pošiljal po mreži.

Ta GDB zahteva, da se poveže na tty file/device. Funkcija isatty() mora potrdit, da je da moj device/driver tty. Če to ni (če npr. pošiljam v fifo), potem GDB javi napako "set_tty_state_failed: Inappropriate ioctl for device".

Zgodovina sprememb…

  • spremenil: slovencl ()

RedDrake ::

Tole se da narediti s psevdo terminali.
Advanced Programming in the UNIX Environment (APUE) je luštna knjiga kjer je to demonstrirano. Na spletni strani lahko downloadaš source, ki so dobro komentirani, notri je tudi primer za pseudo terminal (pty). Sicer so ti demo programi malce overly developed in je brez knjige rahlo težje razvozlati kaj je tisto ključno za delovanje, ampak se da :).
Drugače pa openpty oz. bolj verjetno forkpty (glede na to kaj želiš početi) sta funkciji iz pty.h (-lutil potem za linker), ki tudi omogočata točno to. Psevdo terminal bi moral vrniti true na isatty().

Zgodovina sprememb…

  • spremenil: RedDrake ()

slovencl ::

Hvala za odgovor! Bom preveril in poskusil zrealizirat


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Zaznavanje Arduina priklopljenega preko USB v Linuxu

Oddelek: Programiranje
211599 (1093) mojster_joni
»

Linux/KDE - shell scripta

Oddelek: Programiranje
13993 (838) Icematxyz
»

suse 9.1 in radeon 9800PRO

Oddelek: Operacijski sistemi
111723 (1595) jurre
»

Suse 8.2 težave z grafično...

Oddelek: Operacijski sistemi
91785 (1673) norvalk
»

SuSe 8.1 in miška

Oddelek: Operacijski sistemi
7694 (665) dj_jojo

Več podobnih tem