J'ai rencontré un problème étrange (et probablement spécifique à une plate-forme) lorsque j'essaie de faire une boucle piège-sommeil.Signal Trapping dans bash ne fonctionne qu'une seule fois dans RHEL7 (mais pas dans Ubuntu)
Plus précisément, le code suivant:
saysomething() {
trap saysomething 37
echo "Hello there"
while true; do
sleep 1
done
}
echo "Current pid: $$"
saysomething
imprime "Bonjour" à chaque fois que je l'envoie un signal d'un autre shell en utilisant kill -37 <pid>
sur Ubuntu 14.04.
Toutefois, sur une machine RHEL 7, les informations ci-dessus s'impriment Hello there
uniquement la première fois. Après cela, le script continue à s'exécuter mais ne répond plus à aucun signal.
Quelle pourrait être la raison de cette différence?
Désolé! lire trop vite. peut-être que vous pourriez le faire de l'extérieur de la fonction, alors. –
Utilisez-vous la même version de 'bash' sur les deux machines? – chepner
Non. On dirait que les versions 'bash' sont différentes. 4.3.11 sur Ubuntu et 4.2.46 sur RHEL 7. Cela conduirait-il à une telle différence de comportement? – balajeerc