J'ai été surpris par ce commentaire dans une autre question:
L'envoi dd du signal USR1 trop tôt après son démarrage (c'est-à-dire dans un script bash, la ligne après l'avoir démarré) le terminera en fait
Quelqu'un peut-il expliquer pourquoi ?
J'ai été surpris par ce commentaire dans une autre question:
L'envoi dd du signal USR1 trop tôt après son démarrage (c'est-à-dire dans un script bash, la ligne après l'avoir démarré) le terminera en fait
Quelqu'un peut-il expliquer pourquoi ?
{ dd if=/dev/zero of=/dev/null & }; kill -USR1 $!; jobs; sleep 1; jobs
pour reproduire l'effet que vous décrivez.Réponses:
Chaque signal a une "disposition par défaut" - ce qu'un processus fait par défaut lorsqu'il reçoit ce signal. Il y a un tableau dans la
signal(7)
page de manuel les énumérant:SIGUSR1
et lesSIGUSR2
deux ont l'action par défautTerm
- le processus est terminé.dd
enregistre un gestionnaire pour intercepter le signal et faire quelque chose d'utile, mais si vous signalez trop rapidement, il n'a pas encore eu le temps d'enregistrer ce gestionnaire, donc l'action par défaut se produit à la placela source
strace
sortie dans un script shell…)