Re: [ssfr] Finalement, ça concerne bien le shell...

[ Thread Index | Date Index | More debianworld.org/shellscript-fr Archives ]


Philippe Jacquot a écrit :
Philippe Jacquot a écrit :
Philippe Jacquot a écrit :
Hello

Je reviens mon problème lié à Perl. En fait, j'avais fait un signal handler qui intercepte SIGINT et lance la routine correspondante, en l'occurance afficher la liste des noeuds non parcourus lors de la découverte d'un arbre.
Je le lançais comme ça:
$ ./fb_explore.pl | tee Resultat.log
Quand je [ctrl+c], aucun affichage ne se produisait.

Je viens par hasard de lancer ma commande *sans le pipe*, et là, ça fonctionne. Du coup, je me demande qui prend le [ctrl+c ] au final, est-ce qu'il est répercuté sur les membres du pipe, qui le reçoit en premier ? Si c'est le "tail", est-ce qu'il envoit un SIGINT ou un autre SIGxxx aux membres précédents, ... ?

(c'est pour construire un arbre d'amis d'amis d'amis... sur facebook, si ça intéresse quelqu'un...)


Merci de m'éclairer de vos lumières.  =)
Philippe

---
C'est à s'arracher les cheveux...
En fait, le handler est bien exécuté, puisqu'il m'affiche ma ligne de log. Mais c'est tout ce qu'il fait. Il n'exécute pas le reste des commandes. Du coup, je ne sais pas si c'est un problème relevant de bash ou de perl, étant donné que le programme fonctionne sans le pipe.
Je vais essayer sur la liste perl. Désolé pour le dérangement.  :)
Je continue à soliloquer... :)
Finalement, le code est bien exécuté, mais c'est la sortie standard qui n'est plus connectée au tail, on dirait. En revanche, si je print sur STDERR (raison pour laquelle ma ligne de log s'affichait), ça apparait bien. Mais si j'ajoute un 2>&1, plus rien du tout. J'ai donc l'impression que le tail est tué avant la commande perl, et que c'est bêtement pour ça que je n'ai pas mon affichage. Si je veux un tee, il faut donc que je le mette dans mon perl, avec une option pour l'activer.
A moins que quelqu'un ne voit une autre solution ? :)

Pour en finir avec cette histoire, il semble aussi que bash ne reconnecte pas le stdout de perl sur l'écran une fois que tee est mort, raison pour laquelle non seulement je n'avais pas ma sortie dans le fichier de log, mais de surcroit je n'avais plus rien à l'écran.
Y'a de ces petites conneries qui vous prennent du temps... :)

P.


---


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/