le Fri, 03 Oct 2003 23:16:30 +0200, Baptiste Mathus <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>
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
______________________________________________________________________
pgpE8K1j6YAQc.pgp
Description: PGP signature

