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 :

1 seule instance d'application [Fait]


Sujet :

Python

  1. #1
    Membre éclairé

    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
    Par défaut 1 seule instance d'application
    hello à tous,

    je cherche un bout de code qui permet de ne lancer qu'une seule fois une application et que donc une nouvelle tentative ce solde par un échec (disons juste un message pour signaler que l'apply et déjà lancée)

    quelqu'un à cela dans ses tiroirs?

    merci d'avance

  2. #2
    Membre émérite Avatar de pop_up
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 877
    Par défaut
    j'ai trouvé ceci si ça peut t'aider:

    http://aspn.activestate.com/ASPN/Coo.../Recipe/465850


  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Le mieux est de créer un fichier à mon avis:
    Tu crées le fichier au lancement, tu l'effaces à la fermeture
    Il y a peut-être aussi moyen en créant un fichier qui contient le PID de ton appli et en cherchant si ce pid existe encore et correspond à ton appli (à l'aide des fonctions spécifique à l'OS, tu perds donc en portabilité)

  4. #4
    Membre éclairé

    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
    Par défaut
    le lien est pour ne pas recréer une classe au sein d'une application, donc ce n'est pas ce que je cherche, puisque cela n'empêche pas de lancer plusieurs fois la même application.

    la création du fichier et tentante, mais dans certain cas cela peut me causer des soucis à cause des droits de dossier (linux)

    j'ai vu qu'il existait une fonction "mutex" qui pourrait semble t'il servir à cela, mais je n'est trouvé aucun exemple pratique et les quelques tests que j'ai fait se sont soldé par un échec, car je ne sais pas comment "nommer" le mutex

    quelqu'un à peut-être cela sous la main?

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Citation Envoyé par jean-jacques varvenne
    la création du fichier et tentante, mais dans certain cas cela peut me causer des soucis à cause des droits de dossier (linux)
    Pas moyen de créer ça dans /tmp/ ou ~/.tonappli/ ?

  6. #6
    Membre éclairé

    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
    Par défaut
    l'écriture de fichier me déplaît... par contre j'ai trouvé une autre solution qui utilise les sockets et là, aucun problème d'écriture! ci-dessous le code
    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
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
     
    from asyncore import dispatcher
    import sys, time, socket
     
    class Server( dispatcher ):
      def __init__(self):
        dispatcher.__init__(self)
        self.create_socket( socket.AF_INET, socket.SOCK_STREAM )
        self.bind( ( '', 50000 ) )
        self.listen(1)
     
    try:
      Server()
    except:
      print 'Déjà en service !'
      sys.exit()
     
     
    print 'START'
    time.sleep(10)
    print 'STOP'
    bon, j'admet c'est brutal le try... except, mais efficace!
    de plus aucun soucis, il suffit de placer ce code au début du programme et puis l'oublier, que demande le peuple?

    si vous avez d'autres idées...

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

Discussions similaires

  1. [FAQ C#] Comment ne lancer qu'une seule instance de mon application WPF ?
    Par Gregory.M dans le forum Windows Presentation Foundation
    Réponses: 16
    Dernier message: 18/11/2010, 18h08
  2. avoir une seule instance de l'application
    Par doderic dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 25/10/2008, 11h38
  3. Réponses: 11
    Dernier message: 06/12/2005, 08h23

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