Philippe Monroux <[EMAIL PROTECTED]> writes:

>     /usr/game/fortune > /home/phi/signature # /home/phi/signature
>     est un tube nommé

> Et quand je le lance par :/home/phi/bin/signature.sh, signature.sh
> est lancé deux fois....

> Ca vient du tube. Car si je supprime le tube signature avant de lancer
> le script puis que je le relance, il n'y a plus qu'un process.
> C'est à priori un comportement normal.

Le shell fait un fork pour lancer fortune via execve et redirige la
"sortie" de ce fork vers /home/phi/signature.

Si /home/phi/signature n'existe pas, il est créé avec le résultat de
la commande fortune, tu ne vois pas de "double script" car tu n'en as
pas le temps.

Si /home/phi/signature est un tube nommé le fork attend que ce tube
soit ouvert "des deux côtés" pour lancer fortune : tu as tout le temps
de voir un "double script" avec ps dans l'intervalle, l'execve lançant
fortune n'a pas encore été fait, le fork si.

A part cette notion de "temps passé", il n'y a aucune différence du
point de vue du script et de fortune entre les deux situations.

              Jean Charles
-- 
Jean Charles Delépine - Équipe Réseaux Télécoms - Université de Picardie

Répondre à