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 :

code retour d'un programme


Sujet :

Langage Perl

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut code retour d'un programme
    Bonjour à tous,

    apres avoir effectué qq tutoriels, fait des recherches dans le FAQ et sur ce forum... question :

    quelqu'un saurait-il comment recuperrer le code retour d'un programme en perl
    (l'équivelent du $? en shell bash) apres l'execution d'un programme externe (`mon_prog`, exec (mon_prog)ou system "mon_prog") ??

    Cordialement,

    Gaëtan

  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 gaetanlcs
    quelqu'un saurait-il comment recuperrer le code retour d'un programme en perl (l'équivelent du $? en shell bash) apres l'execution d'un programme externe (`mon_prog`, exec (mon_prog)ou system "mon_prog") ??
    Bravo !! Et oui, Perl a bien des racines dans le shell :
    Voici une partie de perlvar

    --
    # $CHILD_ERROR
    # $?

    The status returned by the last pipe close, backtick (`` ) command, successful call to wait() or waitpid(), or from the system() operator. This is just the 16-bit status word returned by the wait() system call (or else is made up to look like it). Thus, the exit value of the subprocess is really ($?>> 8 ), and $? & 127 gives which signal, if any, the process died from, and $? & 128 reports whether there was a core dump. (Mnemonic: similar to sh and ksh.)

    Additionally, if the h_errno variable is supported in C, its value is returned via $? if any gethost*() function fails.

    If you have installed a signal handler for SIGCHLD , the value of $? will usually be wrong outside that handler.

    Inside an END subroutine $? contains the value that is going to be given to exit(). You can modify $? in an END subroutine to change the exit status of your program. For example:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        END {
    	$? = 1 if $? == 255;  # die would make it 255
        }
    Under VMS, the pragma use vmsish 'status' makes $? reflect the actual VMS exit status, instead of the default emulation of POSIX status; see "$?" in perlvms for details.

    Also see "Error Indicators".
    --

    NB : Si tu n'as pas besoin de sa sortie standard, exécuter la commande avec system() plutôt qu'avec les backticks `` renvoie directement le code de retour de la commande.

    --
    Jedaï

Discussions similaires

  1. Code retour d'un programme Java lancé par bat/.sh
    Par ghiwani80 dans le forum Général Java
    Réponses: 3
    Dernier message: 22/10/2012, 09h17
  2. Code retour d'un programme java et script bash
    Par sywave dans le forum Général Java
    Réponses: 1
    Dernier message: 30/06/2011, 22h51
  3. Execution programme et récupération du code retour
    Par Dr_GonZO dans le forum Langage
    Réponses: 5
    Dernier message: 12/07/2005, 15h20
  4. [Debutant(e)] Code de retour de mon programme
    Par benji999 dans le forum Général Java
    Réponses: 2
    Dernier message: 10/12/2004, 13h15
  5. [commande DOS] Récupérer le code retour d'un programme
    Par bobunny dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 04/06/2004, 15h51

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