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.