Bonjour à tous,
Je suis nouvelle sur ce forum et tiens tout d'abord à vous prévenir : je suis novice en programmation et n'ai pas la lumière à tous les étages, dans cette discipline...
Aussi, j'apprécierais grandement un peu d'aide sur un exercice...
La consigne :
Je dois complétez les scripts suivants pour que :
- la réception du premier signal SIGUSR1 par le processus sigPere.sh provoque la fin de sig1.sh
- la réception du premier signal SIGUSR2 par sigPere.sh provoque la fin de sig2.sh
- après avoir reçu un signal SIGUSR1 (SIGUSR2), sigPere.sh ignore les autres.
Code :
- #! /bin/bash
- # sigPere.sh
- echo pere debut : $$
- ./sig1.sh &
- ./sig2.sh &
- while true; do
- sleep 1
- done
- #! /bin/bash
- # sig1.sh
- echo sig1 debut
- while true; do
- sleep 1
- done
- #! /bin/bash
- # sig2.sh
- echo sig2 debut
- while true; do
- sleep 1
- done
|
J'ai récupéré le PID des deux processus fils pour que sigPere puisse leur envoyer un SIGKILL. Ce qui donnerait :
Code :
- ./sig1.sh &
- SIG1PID=$!
- ./sig2.sh &
- SIG2PID=$!
- trap "kill -SIGKILL $SIG1PID" SIGUSR1
- trap "kill -SIGKILL $SIG2PID" SIGUSR2
|
Après quoi, sigPere ignorerait les signaux suivants :
Code :
- trap "" SIGUSR1
- trap "" SIGUSR2
|
Mais je bloque sur l'enchaînement du script. Devrais-je incrémenter un compteur ?
Merci de m'avoir lue...