le Fri, 03 Oct 2003 23:16:30 +0200, Baptiste Mathus <bmathus@free.fr> s'exprima en ces termes: > Slt tout le monde ! :) > > Une tite question : est ce que qqn sait comment faire pour se brancher > > sur la sortie std (erreur ou normale) d'un procesus ? > Bien sur, je suppute qu'il faut au moins posséder celui-ci ou être > root... > > Je pense à une fonction du genre dup() et dup2() ... Mais je ne vois > pas trop comment l'utiliser sur un processus déjà lancé... Utilise /proc: les descripteurs de fichier ouvert par un process de PID P seront das le rep. /prox/P/fd. Après quelques essais, j'ai rien obtenu de concluant. Autre méthode: les named pipes. Ce sont de simples tuyaux dans lesquels les données circulent dans un seul sens. Par exemple avec apt-get: - on crée deux pipes (lecture et écriture): bash-2.05b$ mkfifo /tmp/mon_fifo_lecture /tmp/mon_fifo_ecriture - on dit apt-get de les utiliser: bash-2.05b$ cat /tmp/mon_fifo_lecture | \ apt-get install gkrellm > /tmp/mon_fifo_ecriture - on n'a plus qu'à lire la sortie de apt-get depuis un autre terminal: bash-2.05b$ cat /tmp/mon_fifo_ecriture Lecture des listes de paquets... Construction de l'arbre des dépendances... [blablabla] - et on pilote depuis un troisième terminal: bash-2.05b$ echo N > /tmp/mon_fifo_lecture et la sur le deuxième terminal: Souhaitez-vous continuer ? [O/n] Annulation. Ça s'était pour les techniques hors développement. La meilleur technique est probablement de développer un wrapper, i.e. une appli qui lancera ton appli en redirigeant std[in|out|err] où tu veux. La technique, c'est: - ouverture des fd correspondant aux endroits ou tu veux envoyer tes sorties et récupérer tes entrées (pipes / sockets / fichiers ...) - dup() - fork() - exec() dans le fils, wait() dans le père. Bonne chance /N ______________________________________________________________________ Nicolas Rueff <n.rueff@tuxfamily.org> http://rueff.tuxfamily.org +33 6 77 64 44 80 -- Obviously I was either onto something, or on something. -- Larry Wall on the creation of Perl ______________________________________________________________________
Attachment:
pgp6e19xV8BCm.pgp
Description: PGP signature