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

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Arrêter un programme proprement lors d'un Ctrl + C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Arrêter un programme proprement lors d'un Ctrl + C

n°705882
burgergold
5$? va chez l'diable!
Posté le 22-04-2004 à 13:27:30  profilanswer
 

J'ai un script qui va devoir rouler dans un while (1) {}
 
j'aimerais que lorsque qu'on fasse Ctrl + C pour l'arrêter, que celui-ci capte le signal et effectue certaines tâches (écriture dans les logs par exemple)
 
J'ai essayé avec $SIG{INT} = \&quit(); mais ca fait quitter le programme au lancement et non lors d'un Ctrl + C
 
une idée?
 
 
merci

mood
Publicité
Posté le 22-04-2004 à 13:27:30  profilanswer
 

n°705884
Taz
bisounours-codeur
Posté le 22-04-2004 à 13:31:03  profilanswer
 

ben tu vires les () à quit quand même :D

n°705888
Taz
bisounours-codeur
Posté le 22-04-2004 à 13:32:45  profilanswer
 

t'as aussi le modeule sigtrap
 
petit conseil : dès que tu as atrapé SIGINT, ça peut être une bonne idée de remettre le gestionnaire par défaut, en cas de problème vraiment sérieux.

n°705891
burgergold
5$? va chez l'diable!
Posté le 22-04-2004 à 13:33:52  profilanswer
 

Taz a écrit :

ben tu vires les () à quit quand même :D


 
en perl ca change rien si je les places ou non, c'est simplement mieux pour l'oeil

n°705892
burgergold
5$? va chez l'diable!
Posté le 22-04-2004 à 13:34:47  profilanswer
 

Taz a écrit :

t'as aussi le modeule sigtrap
 
petit conseil : dès que tu as atrapé SIGINT, ça peut être une bonne idée de remettre le gestionnaire par défaut, en cas de problème vraiment sérieux.


 
je vais regarder la différence entre SIGTRAP et SIGINT (déjà que jsais pas trop la définition du SIGINT)
 
"le gestionnaire par défaut" -> jpige que dalle :D

n°705898
burgergold
5$? va chez l'diable!
Posté le 22-04-2004 à 13:39:31  profilanswer
 

Code :
  1. use sigtrap 'handler' => \&myhand, 'INT';


 
ca semble fonctionner
 
 
merci oh grand gourou

n°705918
Taz
bisounours-codeur
Posté le 22-04-2004 à 13:51:15  profilanswer
 

Code :
  1. $SIG{INT}=\&myhand;
  2. sub myhand
  3. {
  4.     print "Reçu $SIG{INT}",@_,"\n";
  5. }
  6. print "Rrrrrrrrrr\n";
  7. while(1){sleep 1;}

tu disais ?

n°705919
burgergold
5$? va chez l'diable!
Posté le 22-04-2004 à 13:51:39  profilanswer
 

hum... finalement c'est p-e pas fini :D
 
y'a t-il moyen de lui laisser terminer sa boucle while (pas la boucle au complet, mais ce tour ci) avant?
 
du genre
 

Code :
  1. while (1) {
  2.   `dir C:\`;
  3.   print LOG "HH:MM:SS Dir\n";
  4. }


 
je fais Ctrl + C lorsqu'il effectue son dir C:\, j'aimerais qu'il puisse tout meme l'écrire dans le log avant d'exécuter ma fonction de fin d'exécution

n°705925
Taz
bisounours-codeur
Posté le 22-04-2004 à 13:55:16  profilanswer
 

non

n°705927
burgergold
5$? va chez l'diable!
Posté le 22-04-2004 à 13:56:55  profilanswer
 

oui :D
 
sub myhand {
  $quit = 1;
}
 
et mon while je le change pour
 
until ($quit) {
  ...
}


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Arrêter un programme proprement lors d'un Ctrl + C

 

Sujets relatifs
En quel langage est programmé Windows ?Commandes SQL dans un programme en C
lancement d'un programme java via un shellLancement d'un programme JAVA via un script
lancer un programme javaprogramme qui change une liste de ligne sur un fichier txt (débutant)
Probleme mineur avec un programme que je ne sais résoudre..merciUn programme pour transferer auto un fichier sur mon serveur
executer un programme depuis le port parallelProgramme qui prend 100% CPU :|
Plus de sujets relatifs à : [Perl] Arrêter un programme proprement lors d'un Ctrl + C


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