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 :

Perl : Processus


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut Perl : Processus
    Bonjour,

    Je suis confrontée à un problème assez délicat.

    Je travaille à la création d'une application TK.

    Je souhaitera pouvoir réaliser celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sub fonction(){
       while(){
           #Traitement long de la fonction et qui utilise un telnet->print pour envoyer des commandes au terminal
     
           #Effectuer à intervalle de temps régulier une autre fonction (utilisant le protocole telnet pour envoyer et recevoir des informations d'une autre machine) et afficher le résultat à l'écran de cette seconde fonction pendant que la 1e fonction s'exécute (20 mins d'exécution)
       }
    }
    J'ai codé les 2 fonctions, les fonctions d'affichage à l'écran....
    Les exécuter l'une à la suite de l'autre ne pose pas de problème. Par contre, commencer à exécuter la 1e et en même temps exécuter plusieurs fois la 2e, je ne sais pas comment faire ça.

    Vous avez une idée?

    Merci,
    Lucie

  2. #2
    Expert confirmé
    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
    Par défaut
    Il y a plusieurs solutions. Si tu n'as pas de long appels bloquants, tu peux utiliser Tk::After (avec les fonctions after() ou repeat()) pour ta fonction de mise à jour à partir de Telnet, et parsemer ta fonction longue de DoOneEvent() (qui permettra à Tk de reprendre la main temporairement). Par contre si tu as de long appels bloquants, tu vas devoir soit utiliser les threads, soit créer des processus fils avec fork(). Dis nous déjà dans quel cas tu es, et nous essaierons de t'aiguiller.

    --
    Jedaï

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut Help !!!
    Ce sont de longs appels bloquant (20 mins).

    D'ailleurs, la fonction bloquante (de récupération de flux après envoi d'une commande qui s'exécute pendant 20 mins) est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    # Je lance la commande
     
    #Je récupère le flux d'affichage à l'écran
    while ($ligne=$telnet->get(Errmode=>"return",Timeout=>3)){
       $ensemble=$ensemble.$ligne;
    }
     
    # Et ensuite j'affiche $ensemble dans un champs texte.
    Il faudrait que dans cette fonction, je puisse régulièrement effectuer une autre tâche.

Discussions similaires

  1. Perl - processus arreté
    Par Isabella83 dans le forum Langage
    Réponses: 8
    Dernier message: 03/10/2012, 14h20
  2. [PERL] processus fils
    Par Ashin dans le forum Langage
    Réponses: 2
    Dernier message: 21/04/2010, 18h08
  3. Probleme processus Fork PERL
    Par djezair31 dans le forum Langage
    Réponses: 3
    Dernier message: 02/10/2006, 16h00
  4. [Perl] communication Inter-Processus
    Par MarneusCalgarXP dans le forum Langage
    Réponses: 15
    Dernier message: 14/08/2006, 22h43
  5. Tuer un processus lance par system sous perl
    Par gedeon555 dans le forum Langage
    Réponses: 4
    Dernier message: 10/04/2006, 17h11

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