Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1674 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème avec les signaux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec les signaux

n°2117467
mouacmoua1​2
Posté le 20-12-2011 à 12:21:55  profilanswer
 

Bonjour à tous
Je tiens d'abord à vous prévenir que je suis un novice complet en informatique  :D  
J'ai un petit exo à faire et je bloque un peu.
 
Il faut donc écrire un script qui affiche "SIGUSR1 recu" lorsqu'il reçoit un signal USR1 pour la première fois et se termine après avoir affiché "SIGUSR1 fin" lorsque ce n'est pas la première fois. Il est précisé dans la consigne que lors de la réception du premier signal SIGUSR1, le script doit redéfinir le traitement à effectuer (là je comprends pas trop...).
 
J'ai commencé à chercher avec des boucles mais sans succès, je suis donc resté sur ça  
 

Code :
  1. #! /bin/bash
  2. # modif.sh
  3. echo je suis le processus $$
  4. trap "echo SIGUSR1 recu " SIGUSR1
  5. while  true      #Il faudrait rajouter la condition le signal est reçu pour la première fois je suppose..
  6. do
  7. sleep 1
  8. done
  9. trap "echo SIGUSR1 fin; exit 1" SIGUSR1
  10. while true
  11. do
  12. sleep 1
  13. done


 
Merci à ceux qui auront pris le temps de m'aider (s'il y en a)

mood
Publicité
Posté le 20-12-2011 à 12:21:55  profilanswer
 

n°2117473
Profil sup​primé
Posté le 20-12-2011 à 12:36:51  answer
 

salut,
 
La boucle n'a pour but que de simuler la durée d'un script.
En fait, le script-exercice se déroule dans la commande trap.
Je te suggère d'y incrémenter un compteur.

n°2117483
mouacmoua1​2
Posté le 20-12-2011 à 13:25:09  profilanswer
 

Merci pour ta réponse !
Mais pour mettre un compteur, je suis quand même obligé de mettre une condition du type "si le signal est reçu pour la 2ième fois, alors affiche signal reçu fin" ? Je comprends pas trop comment l'incrémenter dans l'instruction trap.
Suis-je sur la bonne voie ?

Code :
  1. #! /bin/bash
  2. # modif.sh
  3. echo je suis le processus $$
  4. trap "echo SIGUSR1 recu " SIGUSR1
  5. i=0
  6. while [ true ] && [ i -le 1 ]
  7. do
  8. i = `expr $i + 1`
  9. sleep 1
  10. done
  11. trap "echo SIGUSR1 fin; exit 1" SIGUSR1
  12. while true
  13. do
  14. sleep 1
  15. done

n°2117497
Profil sup​primé
Posté le 20-12-2011 à 13:58:44  answer
 

expr est un programme externe non-indispensable (le shell peut effectuer l'évaluation arithmétique par lui-même) !
 
au lieu d'utiliser trap pour ne faire que l'affichage, tu peux y incrémenter i, et l'y tester pour afficher l'un ou l'autre message, et quitter.


Message édité par Profil supprimé le 20-12-2011 à 14:00:43
n°2117535
Profil sup​primé
Posté le 20-12-2011 à 18:11:46  answer
 

Je copie ici ma réponse à ton MP, car ça pourrait être utile à d'autres plus tard.
 
ton trap se contente de faire un echo, mais il peut contenir plus : une liste de commandes, un appel à une fonction, ou à un autre script.  
 
je t'explique la manière portable, bash l'accepte (ça fonctionnera), mais il est plus souple.  
les  évaluations arithmétiques se font entre doubles-parenthèses  

Code :
  1. increment=$(( $increment + 1 ))
  2. echo $increment
  3. 1


fais d'autres essais, d'autres opérations...  
 
les tests se font entre crochets simples

Code :
  1. unset increment
  2. if [ "$increment" -ge 1 ] #gt = greater or equal, voir help test
  3. then echo ouais
  4. else echo oh
  5. fi


va afficher "oh"  
si tu ajoutes l'incrémentation (vue précédemment) après echo oh, la deuxième fois que le test sera effectué "$increment" vaudra 1, et alors il affichera "ouais"


Message édité par Profil supprimé le 20-12-2011 à 18:12:31

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème avec les signaux

 

Sujets relatifs
Problème sur FMyScript (clone de VDM)probleme abstracttabemodel jtable java
Probleme de scrollingprobleme exo d'algorithmique
Problème affectation de classeur dans une variableProblème d'envoi de caractères Japonais dans 1 formulaire
probleme execution animation openglProblème de définition d'une constante avec des simple quote
problème signaux en shellProbleme de signaux
Plus de sujets relatifs à : Problème avec les signaux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR