IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Comment gérer les interruptions des programmes ?


Sujet :

Langage Perl

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Comment gérer les interruptions des programmes ?
    Bonjour

    J'ai un petit script sh qui a pour but d'installer une application via le catalogue de logiciels portés de FreeBSD. Si l'installation échoue ou si la commande make est interrompue, j'en suis directement informé par email.

    Voici le script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	echo "===> Vérifie la présence du programme fastest_cvsup"
    	if [ ! -x /usr/local/bin/fastest_cvsup ]; then
    		echo "===> Installation du programme fastest_cvsup"
    		cd /usr/ports/sysutils/fastest_cvsup && make install clean
    		RETVAL=$?
    		if [ $RETVAL != 0 ]; then
    			echo -e $top"La compilation et/ou l'installation du programme fastest_cvsup a échoué."$foot > $logfile
    			sendmail
    			exit 1
    		fi
    	fi
    Ici, j'utilise retval mais son utilisation sous perl est aléatoire. Parfois l'installation débute et se termine brutalement. Pourquoi ? Comment ? Je ne sais pas. Pourriez-vous me donner des informations à ce sujet svp ?

    Merci

    PS: mon fillot peut répondre à ça, il est très fort en perl
    .Olivier

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Olivier Regnier
    Ici, j'utilise retval mais son utilisation sous perl est aléatoire. Parfois l'installation débute et se termine brutalement. Pourquoi ? Comment ? Je ne sais pas. Pourriez-vous me donner des informations à ce sujet svp ?
    Je ne suis pas sûr de bien comprendre ta question ? Tu es en train de convertir ce programme en Perl ? ou tu appelles ce programme depuis Perl ?

    --
    Jedaï

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour Jedai

    J'essaye de convertir ce programme en perl. D'ailleurs, j'ai commencé avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/usr/bin/perl -w
     
    use strict;
     
    my $retval=0;
     
    print "=> Downloading the source file\n";
    system("/usr/bin/csup $standard_supfile");
    if(! $retval) {
          print "Csup aborted\n";
          exit;
    }
    J'ai pensé quelques instants que ce code fonctionnait mais lorsque le programme a terminé son travail (téléchargement des sources), il indique en fin de traitement "Csup aborted". Je cherche à faire fonctionner correctement retval avec perl sans devoir passer par la gestion des signaux.

    Merki

    PS: mon fillot a trouvé la solution
    .Olivier

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    ta varizble $retval est toujours à zero donc normal que tu ai le message Csup aborted

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Olivier Regnier
    PS: mon fillot a trouvé la solution
    C'est bien de mettre le message en résolu, mais si tu dis simplement avoir la solution et que tu ne la donnes pas (ou au moins un indice), c'est frustrant pour quelqu'un qui voudrait faire une recherche par la suite ! (Je sais bien que personne n'utilise la fonction "Recherche" du forum, mais laissez moi préserver mes belles illusions !! )

    $retval n'est pas une variable spéciale en Perl, il n'y a donc aucune raison qu'elle prenne subitement la valeur du dernier retour de system(). D'ailleurs en bash non plus a priori ? Comme en bash, la valeur de retour du dernier appel de system() se trouve dans $?, tu aurais donc pu utiliser $? ou au moins l'affecter à $retval (comme dans le script shell), néanmoins la solution la plus propre et lisible serait sûrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    print "=> Downloading the source file\n";
    # $standard_supfile n'est pas déclaré, je suppose qu'il l'est dans le code complet ?
    my $retval = system("/usr/bin/csup $standard_supfile"); 
    if( not $retval ) {
          die "Csup aborted\n";
    }
    parfois abrégé en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    system("/usr/bin/csup $standard_supfile"); 
      and die "Csup aborted\n";
    --
    Jedaï

  6. #6
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Voici la solution trouvée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/usr/bin/perl -w   
     
    use strict;   
     
    print "=> Downloading the source file\n"; 
     
    if (system("/usr/bin/csup $standard_supfile")) 
    {  
    print "Csup aborted\n"; 
    exit; 
    }
    Il faut me laisser le temps de répondre cher ami. Mon script fonctionne et comme à mon habitude, j'ai fêté tout ça
    .Olivier

  7. #7
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut Si si
    Si, si, Jedai, il y a des gens qui utilisent la fonction recherche du forum ; il y a en aussi – je parle là encore de moi, pardon – qui lisent les posts pour apprendre, ce n'est pas une illusion.

    Donc la solution en clair était la bien venue (même si c'est la même que la vôtre et que pour ma part j'avais saisi le truc).

    Merci encore pour ce forum.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2015, 20h30
  2. [SP-2007] Comment gérer les accréditations des sous-sites ?
    Par Sites dans le forum SharePoint
    Réponses: 14
    Dernier message: 11/07/2011, 13h45
  3. Comment gérer les exceptions des DetailsView ?
    Par insane_80 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 21/01/2011, 15h39
  4. Comment gérer les notes des examens
    Par badi3a82 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 20/07/2009, 12h01
  5. Réponses: 3
    Dernier message: 19/05/2006, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo