Question ... ma foi ... de fort beau gabarit :o)
Bon alors, petit rappel (1). Quand on demande au shell
d'ex�cuter une commande externe (un binaire), il
forke, puis son fils invoque l'appel syst�me
exec("commande"). Ce dernier lui permet de substituer
en m�moire le code de "commande" � son propre code. A
la fin on se retrouve avec 2 processus : le shell
(p�re), commande (fils)
petit rappel (2) : un pipe (nomm� ou pas) est un moyen
g�nial de faire communiquer plusieurs processus. Par
exemple, quand il n'y a aucun processus qui a ouvert
le pipe en lecture, un processus qui l'ouvre en
�criture se voit bloqu� jusqu'� ce l'autre bout soit
ouvert. Plusieurs m�canismes comme celui-ci permettent
de bien synchroniser la communication.
Gr�ce � ces deux rappels je pense pouvoir expliquer ce
qui ce passe :
- tu lances signature.sh
- celui-ci essaye d'ex�cuter fortune : il forke et ...
en fait il n'effectue pas encore le "exec(fortune)"
car le m�canisme des pipes le bloque. (je pense
qu'il n'y a aucun programme qui essaye de lire ton
tube nomm�)
On se retrouve donc avec un script shell qui c'est
fork�, d'o� le r�sultat de la commande ps.
Un indice m'a permis de suivre ce raisonnement :
ps -l -u user donne :
000 S 1000 8426 755 0 60 0 - 571 wait4
pts/2 00:00:00 signature.sh
040 S 1000 8427 8426 0 60 0 - 571 fifo_o
pts/2 00:00:00 signature.sh
signification du premier champ du process 8427 (man
ps) :
"FORKNOEXEC 040 forked but didn't exec"
Voil�, @+ .
Antoine Ameurlain
[EMAIL PROTECTED]
___________________________________________________________
Do You Yahoo!? -- Un e-mail gratuit @yahoo.fr !
Yahoo! Courrier : http://fr.mail.yahoo.com