[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: branchement sur fd de processus



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


Reply to: