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

Programmation et administration système Perl Discussion :

[reseaux] Processus


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 87
    Par défaut [reseaux] Processus
    bonjour,

    j'ai un probléme de processus: j'ai un srcipt PERL qui lance un programme C dans un processus fils, son pere attent un certain délai (ici 3 seconde) si le fils est terminé il envoi une redirection vers une nouvelle page html contenant le résultat du prog C, et si le fils n'est pas terminé il envoie une page demandant de revenir plus tard...

    voici le code que j'utilise:

    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
     
     
       $pid = fork();
     
       if($pid==0)
      {
          #prog c
      }
    else{
       autoflush STDOUT 1;
        sleep(3);
        $kid = waitpid($pid,&WNOHANG);
        if($kid != 0)
        {
           	# chargement de la page de résultat
    	print $html->end_html;
    	print "<HTML><HEAD><META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=..></HEAD>";
        }
        else {
    	# chargement d'une nouvelle page qui indique que le travail n'est pas encore terminé
    	print $html->end_html;
    	print "<HTML><HEAD><META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL= ...></HEAD></HTML>";
    	wait;
        }
     
        print $html->end_html;
        exit;
    }
    si le prog C se termine avant le delai c ok la page de résulat se charge nikel, par contre le probléme c'est que si le prog c met plus de temps le pere n'envoi pas la balise méta pour changer de page avant que le fils ne soit terminé.

    voila ci quelqu'un peut me sortir de cette embuche....

    d'avance merci

  2. #2
    Membre émérite
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Par défaut
    bonjur,

    Tu te debrouille mal.
    Voici comment on utilise waitpid :
    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
     
    use POSIX ":sys_wait_h";
     
    $pid = fork();
    if($pid==0)
    {
        exec("./trut");
        exit (1);
    }
    else{
        sleep(3);
        $pidi = waitpid(-1, WNOHANG);
        if ($pidi == $pid)
        {
            print "FINI\n";
        }
        else {
            print "PO FINI\n";
            wait;
        }
        exit;
    }
    Mais attention. Ca peut etre un changement de status. Donc ce n'est pas obligatoirement la mort du processus fils.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 87
    Par défaut processus suite
    en fait je veux savoir si le fils est terminé.

    de plus j'utilise la commande system() au lieu de exec() car après avoir lancé le prog en C je fais des instructions PERL qui utilisent les fichiers créés par le prog C
    il faut que le prog C se termine, pour pouvoir terminer le script (ds le fils)

    le père test si le fils est terminé, si oui il affiche le résultat, sinon il affiche une page de fin et attend la fin du fils.

    j'ai essayé ta solution et ça ne marche tjrs pas

    merci de te pencher sur mon pb

  4. #4
    Membre émérite
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Par défaut Re: processus suite
    Citation Envoyé par GMI3
    j'ai essayé ta solution et ça ne marche tjrs pas

    merci de te pencher sur mon pb
    Je ne comprend pas bien pourquoi. Car ca fonctionne bien.
    Il ne rentre pas dans le else ?

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 87
    Par défaut processus suite
    en fait, si, il rentre bien ds le else, lorsque j'affiche qqchose ça merche ms dès que je fais l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "<HTML><HEAD><META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL= ...></HEAD></HTML>";
    la redirection ne se fait pas du tout, et qd je tue le fils manuellement l'affichage se fait à ce moment : j'ai l'impression que le browser attend la fin de tous les processus du script pour réafficher une nouvelle page.

    merci

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

Discussions similaires

  1. [reseaux] processus en parallèle
    Par BEAUJAULT dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 31/07/2004, 11h32
  2. [reseaux] Lister les processus sur une machine donnée
    Par BEAUJAULT dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 29/07/2004, 15h55
  3. [reseaux] Processus zombie...
    Par dclink dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 10/09/2003, 10h30
  4. [reseaux] redirection de flux
    Par Olive1808 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 12/08/2002, 09h24
  5. [réseaux] Bench en Perl pour avoir le débit entre 2 pc
    Par Frich dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 22/05/2002, 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