On Tue, 3 Apr 2001, Bruno Crochet wrote:

> Si "fd" réfère à "floppy disk", je pige pas car j'ai un seul lecteur de
> disquette...?

fd réfère à file descriptor, ou file handle, si tu préfères, les petits
entiers que l'appel système open(2) retourne.

   typedef int fd_t;

Par définition pour la libc:
   fd 0  STDIN
   fd 1  STDOUT
   fd 2  STDERR

Il faut aussi savoir qu'un xterm c'est un programme graphique qui d'un
côté discute avec X11 (via un file descriptor), et de l'autre discute, au
travers d'une paire de pseudo-ttys avec les applications UNIX.

Cela permet à bash/vi/Emacs de faire des choses comme passer le tty en
mode raw ou cooked (ligne-par-ligne), avec ou sans echo, cf la commande
stty et man termios, etc.

A voir ton rvt a ouvert un pty mais n'a pas obtenu ce qu'il a voulu.
Rapidement, je pense à un problème de UNIX ptys avec soit rvt trop ancien,
soit le pseudo-fs /dev/pts non monté.

Pour prolonger la discussion des ttys/pseudo-ttys, si l'on veut faire du
SLIP (ancêtre de PPP plus simple à comprendre), on envoie des commandes de
composition à un modem, puis une fois connecté/identifié, on insère la
couche `SLIP' dans le tty (certains systèmes UNIX supportant les SYSV
STREAMS `push'ent la couche SLIP, d'autres comme Linux supportent le
concept de `line discipline' SLIP activée par un ioctl()).

Le truc drôle c'est que les pseudo-ttys supportent aussi cela. Donc si
l'on veut injecter simplement des données TCP/IP depuis un processus UNIX,
comme par exemple pour tester la pile IP d'un système embarqué d'abord
comme processus UNIX, il suffit de:

   - ouvrir une paire de ptys

   - activer la connexion pty -> kernel IP (man slattach)

   - envoyer des paquets encapsulés IP.

Un exemple (très simple) qui fait une mini pile IP stupide qui répond aux
pings, avec les instructions de setup, est à

   http://www-internal.alphanet.ch/~schaefer/software.html

Cette version (prototype initial incomplet) est en `public domain'.

NB: aujourd'hui avec Linux il y a d'autres moyens, comme p.ex. passer par
la packet interface, mais je ne connais pas trop. Aujourd'hui on
embarquerait plutôt directement Linux ou BSD d'ailleurs directement au
lieu de refaire le boulot :)

Une autre application de ces magouilles est de faire un tunnel IP via SSH
très simplement; normalement c'est documenté dans la FAQ ssh, sinon
 
   
http://www-internal.alphanet.ch/archives/users/schaefer/public/hand_made_ip_ssh_tunnel.
 


--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.

Répondre à