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 ? :)