Ouvir un terminal sur un /dev/pts bien precis - Codes et scripts - Linux et OS Alternatifs
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  ?
 ?
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 
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/?
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  
 
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 :   
   | 
 
 
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" ); | 
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.