Salut encore Vincent Lefevre a écrit :
Une petite question... avec un shell POSIX (sans supposition supplémentaire), est-il possible d'attendre un signal pour terminer avec un code de retour nul une fois le signal en question reçu? Évidemment, je veux une méthode suffisamment élégante et sans défaut (pas d'attente active consommant du temps CPU et la terminaison du processus doit être immédiate au sens strict du terme). C'est bien le processus shell qui doit recevoir le signal, pas un de ses fils.
C'était le genre de script plus simple à écrire en shell qu'en Perl, surtout qu'il doit faire un "source" pour récupérer des variables d'environnement (à passer à un des processus fils du script). Pour le moment, je pense terminer le script par un "exec perl ..." où le petit script Perl contient un trap et fait un "POSIX::pause" (voire un sleep si le module POSIX est inexistant).
En general j'utilise ca : placer artificiellement le shell en mode attente de signal (un SIGCHLD ici). Du coup il reagit immediatement a tout signal. J'ai pas verifie la POSIX conformance. echo $$ { while : ; do sleep 1000 ; done ; } & trap 'echo gnarf gnarf ; exit 0' USR1 wait dans un autre shell : kill -USR1 pid-du-shell