Ouvir un terminal sur un /dev/pts bien precis

Ouvir un terminal sur un /dev/pts bien precis - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-10-2008 à 13:07:10    

Salut :)  !
 
Dans le cadre d'un projet en C il me faudrai envoyer des infos dans un terminal (une sortie /dev/pts/X).
Mais, y a t'il un moyen d'ouvrir un terminal avec une sortie bien definie ? (genre /dev/pts/3)
 
Merci.

Reply

Marsh Posté le 20-10-2008 à 13:07:10   

Reply

Marsh Posté le 20-10-2008 à 15:08:43    

Ben oui, tu fais open("/dev/pts/3", O_WRONLY) ...

Reply

Marsh Posté le 20-10-2008 à 15:45:34    

En fait j'arrive bien a écrire dans mon pts.
Mon soucis c'est de lancer un terminal avec un /dev/pts/X particulier.
 
En gros c'est pour me permettre d'ouvrir une console et d'écrire dedans avec mon programme.
Si je met en dur /dev/pts/3 je suis pas sur que ma console ouverte soit bien associé a /dev/pts/3 .
 
Je suis clair :D ?

Reply

Marsh Posté le 21-10-2008 à 16:48:56    

UP :D

Reply

Marsh Posté le 21-10-2008 à 19:08:25    

stty -F /dev/pts/1 ?

Reply

Marsh Posté le 21-10-2008 à 23:33:33    

Sur ma debian :
 
[23:29:13] $ ps
  PID TTY          TIME CMD
 7615 pts/1    00:00:00 bash
 7695 pts/1    00:00:00 ps
 
Bonus :
 
[23:35:17] $ ls -l /proc/7615/fd/
total 0
lrwx------ 1 christophe christophe 64 oct 21 23:28 0 -> /dev/pts/1
lrwx------ 1 christophe christophe 64 oct 21 23:35 1 -> /dev/pts/1
lrwx------ 1 christophe christophe 64 oct 21 23:32 2 -> /dev/pts/1
lrwx------ 1 christophe christophe 64 oct 21 23:35 255 -> /dev/pts/1


Message édité par czh le 21-10-2008 à 23:36:15
Reply

Marsh Posté le 22-10-2008 à 09:49:38    

Ouais c'est une bonne idée ça : tu ouvres /proc/PID/fd/0 au lieu d'ouvrir /dev/pts/?

Reply

Marsh Posté le 22-10-2008 à 10:09:52    

J'ai pas trop compris votre solution là :/.
Mais en gros j'ai résolut le problème (bon c'est trivial).
Je lance un terminal dans mon programme c avec un appel system() en luis redirigeant son tty dans un fichier.

Citation :

system("xterm -e 'tty > ./tty'" );


 
Ensuite je lit ce fichier et ecrit dans le tty correspondant.
Si vous avez mieux je prend :)

Reply

Marsh Posté le 22-10-2008 à 12:20:11    

The Dml a écrit :

J'ai pas trop compris votre solution là :/.


En fait toutes les commandes comme ps, w, et tty utilise à la base /proc/, il est donc possible de recoder toutes ces commandes en se basant uniquement sur /proc/. Sachant que toutes les informations sur les processus et les flux gérés par le noyau sont /proc/, la solution s'y trouve forcément.
Ce n'est bien sûr pas un encouragement à réinventer la roue mais simplement à but de compréhension, enfin si ça peut servir...
 

The Dml a écrit :


Mais en gros j'ai résolut le problème (bon c'est trivial).
Je lance un terminal dans mon programme c avec un appel system() en luis redirigeant son tty dans un fichier.

Citation :

system("xterm -e 'tty > ./tty'" );


 
Ensuite je lit ce fichier et ecrit dans le tty correspondant.
Si vous avez mieux je prend :)


 
Par-contre, j'ai du mal à comprendre à quoi peut te servir un flux qui n'existe plus, je m'explique :
quand on fait appel à la commande xterm, il y a initialisation d'un nouveau /dev/pts/x autre que celui utilisé indirectement par le programme exécuté (exécutable C en l'occurence ici).
 
Par exemple, si tu fais system("xterm -e 'tty > ./tty; sleep 100;'" ); ce qui a pour effet de laisser le xterm vivre assez longtemps pour bricoler avec
et dans une autre console, même répertoire : cat > `cat tty`.
 
Autre exemple (entièrement bash) :
xterm -e 'tty > ./tty; sleep 50'&
echo > `cat tty`
cat > `cat tty`
 
 
En bref, juste après ton system("xterm -e 'tty > ./tty'" );, le truc que tu récupères n'est plus utilisé par aucune console.
 
edit : et dans ce cas est plus cohérent un :

Citation :

system("tty > ./tty" );


Message édité par czh le 22-10-2008 à 13:58:22
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed