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 tgl . Évalué à 1.
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.