Re: problème de pipe

Top Page

Reply to this message
Author: Frédéric
Date:  
To: guilde
Subject: Re: problème de pipe
On Monday 19 June 2006 20:43, anne aublanc wrote:

> perl faxviamail.pl /tmp/repfaxz/titio 1>/tmp/logrepfax 2>&1 | perl
> faxviamail_log.pl /tmp/logrepfax
>
> mais le pgm enfant trouve le fichier /tmp/logrepfax avec une taille à
> zéro quand le pgm parent se termine, le fichier n'est pas vide!


Ce n'est pas tout à fait ça. Un pipe ne fait que connecter la sortie
standard d'un process vers l'entrée standard d'un autre. Les process sont
exécuté en même temps. Dans ton cas, il faut utiliser :

perl faxviamail.pl /tmp/repfaxz/titio 1>/tmp/logrepfax 2>&1 && perl
faxviamail_log.pl /tmp/logrepfax

Le && permet d'exécuter la 2ème commande après la première, seulement si
celle-ci s'est terminée correctement (retour d'erreur 0). Si tu veux que
la deuxième s'exécute si la première fait un erreur, utilise ||.

Sinon, si ton script peut lire les données à envoyer sur son entrée
standard, tu peux faire :

perl faxviamail.pl /tmp/repfaxz/titio 2>&1 | tee /tmp/logrepfax | perl
faxviamail_log.pl

man tee pour plus d'infos sur cette commande bien pratique !

--
Frédéric

http://www.gbiloba.org