attente d'un signal

Christophe Martin christophe.martin at sdt.univ-brest.fr
Fri Feb 17 09:52:25 CET 2006


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





More information about the Shell mailing list