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