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 :

Timeout sur system()


Sujet :

Langage Perl

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Timeout sur system()
    Bonjour
    J'ai besoin de lancer une commande avec la fonction system() pour vérifier son code de retour.
    J'ai aussi besoin de mettre un timeout sur cette appel pour tuer le processus

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    eval {
    	local $SIG{ALRM} = sub { die "Alarm" };
    	alarm($getconfs_timeout);
    	system("toto") == 0 || &failexec("Unable to execute\n",$?);
    	alarm(0);
    };
     
    if ($@ and $@ =~ /Alarm/) {
    	&timeoutexec("Timeout sent\n");	
    } else {
    mais cela créé des zombies

    existe t'il un moyen simple (sans install de librairies) pour faire celà ?
    j'imagine que le fork est obligatoire mais je les maitrise pas très bien

    j'ai essayé çà mais celà n'est pas concluant (je ne sais pas comment tuer un des fils quand l'autre est fini)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #!/usr/bin/perl
    $timeout=30;
     
    &NewPid();
     
     
    sub NewPid(){
      defined($pid1 = fork) or die "Pas de fork1 possible : $!";
      defined($pid2 = fork) or die "Pas de fork2 possible : $!";
      unless($pid1){
        print "Lancement sh\n";
        exec("/var/www/html/outilsecurite/script/cdegetconfs.sh");
        exit 0;
      }
      unless($pid2){
        $time=$timeout;
        while($time>0)
        {
          system("cls");
          print "Il vous reste: $time secondes\n";
          $time=&Decompte($time);
        }
        exit 0;
      }
     
      waitpid($pid2, 0);
      waitpid($pid1, 0);
     
     
    }
     
    sub Decompte(){
      $decompte=$_[0];
      $decompte=$decompte-1;
      sleep(1);
      return $decompte;
    }
    Dernière modification par Invité ; 09/07/2007 à 09h54.

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

Discussions similaires

  1. [C system] timeout sur un processus
    Par GLDavid dans le forum POSIX
    Réponses: 7
    Dernier message: 03/07/2006, 09h01
  2. Timeout sur POST formulaire avec checkbox
    Par shyangel dans le forum Langage
    Réponses: 16
    Dernier message: 11/05/2006, 12h59
  3. Timeout sur read() avec termios et VTIME
    Par olivier857 dans le forum C
    Réponses: 9
    Dernier message: 05/04/2006, 09h30
  4. [Système] pb sur system()
    Par Shandler dans le forum Langage
    Réponses: 4
    Dernier message: 17/01/2006, 14h28
  5. [Sockets] Timeout sur accept() ?
    Par MikB dans le forum Développement
    Réponses: 2
    Dernier message: 30/12/2003, 17h22

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