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