Forum Programmation.shell Signaux et trap en Bash

Posté par  .
Étiquettes : aucune
0
13
mai
2006
J'expérimente présentement avec l'énoncé trap de Bash.

echo Mon PID=$$
export NB=0
trap "NB=$((NB+1)); echo NB1=$NB" SIGUSR1
while true; do
sleep 1
echo NB2=$NB
done

Dans une autre fenêtre, j'envoie des signaux, avec:

kill -s SIGUSR1 numéro_du_pid

Si j'envoie 2 signaux, je recois:
NB2=0
NB1=0
NB2=1
NB1=0
NB2=1
Le compteur est manifestement incorrect mais je ne comprends pas pourquoi.
Il semble que le trap n'ait pas un environnement normal. Quelqu'un est-il renseigné à ce sujet?
Merci
  • # Pb de quote

    Posté par  . Évalué à 1.

    > trap "NB=$((NB+1)); echo NB1=$NB" SIGUSR1

    Ce que tu viens d'écrire, puisque NB=0, est équivalent à :
    trap "NB=1; echo NB1=0" SIGUSR1

    Avec de simples quotes, tu n'auras pas ce problème.

    Sinon, c'est aussi de manière générale plus propre/lisible de mettre ton code dans une fonction et de faire un «trap mon_handler SIGUSR1».

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.