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

Python Discussion :

[signaux] contrôler une apply python


Sujet :

Python

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut [signaux] contrôler une apply python
    Hello,

    après bien des recherches, je me tourne vers vous pour trouver une solution simple au problème suivant: je cherche à contrôler une application python au moyen de signaux, mais ces signaux proviennent d'une autre application.

    le code de l'application donnerait quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def fonction_machin( num_signal ):
      if num_signal == 1:
        fait_ceci()
      elif num_signal == 2:
        fai_cela()
    je récupère sans problème le pid de l'apply (exemple de ci-dessus), mais je ne sais pas comment faire pour dire que les signaux envoyés arrive bien à ma fonction "fonction_machin" et je ne sais quelle fonction utiliser pour envoyer ces signaux depuis une autre application.

    j'y arrive sans problème au sein d'une même application au moyen de signal.signal( numéro quelconque, fonction_machin )
    j'aimerais pouvoir faire la même chose depuis une autre apply python.

    quelqu'un à surement une idée la dessus?

    merci de votre aide et suggestions.

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut une solution...
    j'ai trouvé une solution dont voici le code, si quelqu'un à une meilleur idée, je suis preneur.
    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
     
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
    import signal, time
     
    print 'debut du test'
     
    SignNum = 0
     
    def SignUsr1( Signum, Frame ):
      global SignNum
      print 'Signal sur SignUsr1'
      SignNum = 1
      return
     
    def SignUsr2( Signum, Frame ):
      global SignNum
      print 'Signal sur SignUsr2'
      SignNum = 2
      return
     
    # signal.SIGUSR1 ==> kill -10 pid
    signal.signal( signal.SIGUSR1, SignUsr1 )
     
    # signal.SIGUSR2 ==> kill -12 pid
    signal.signal( signal.SIGUSR2, SignUsr2 )
     
    while 1:
      # N'importe quelle grande valeur si la boucle est infinie.
      # La boucle exécute un tour à chaque réception d'un signal!
      time.sleep(100000)
      print "Fin de l'exécution de SignUsr %d" % SignNum
     
    print 'fin du test'
    pour faire le test, dans une console lancer ce script (après avoir fait un chmod 700!) et dans une autre console, rechercher le pid du script (ps) et lancer les commandes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    kill -10 pid ==> donnera dans la 1ère console:
    Signal sur SignUsr1
    Fin de l'exécution de SignUsr 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    kill -12 pid ==> donnera dans la 1ère console:
    Signal sur SignUsr2
    Fin de l'exécution de SignUsr 2
    et voilà ce que je chercher, simple efficace.

    a noter que la valeur du "sleep" et vraiment quelconque et que contrairement à ce que l'on peux croire, cette commande ne consomme aucune ressource mesurable avec l'utilitaire "top"

    mais je suis sûr que certain ont une meilleure soluce à me proposer. 8)

    bien sûr l'utilisation de & mettra ce script en tâche de fond.

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

Discussions similaires

  1. Afficher réseaux wifi dans une appli python
    Par helpy dans le forum Général Python
    Réponses: 2
    Dernier message: 31/05/2010, 11h09
  2. Contrôler un joystick depuis une appli Windev
    Par cyborg21 dans le forum WinDev
    Réponses: 7
    Dernier message: 02/09/2008, 19h01
  3. Réponses: 10
    Dernier message: 12/10/2007, 14h02
  4. embarqué un SGBD dans une appli python
    Par renegad dans le forum Général Python
    Réponses: 7
    Dernier message: 22/06/2006, 23h26
  5. Embarque un interpreteur Python dans une appli C++
    Par romeo9423 dans le forum MFC
    Réponses: 1
    Dernier message: 01/12/2005, 10h52

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