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

Bibliothèques tierces Python Discussion :

Suspend/Resume process sous Windows (win32api)


Sujet :

Bibliothèques tierces Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Suspend/Resume process sous Windows (win32api)
    Bonjour ami pythonistes !

    J'ai récemment refactorer une application sous Linux afin qu'elle soit "multi-processée". Pour cela j'utilise le module processing de python.
    Mais mon application doit aussi fonctionner sous Windows ... Donc j'essaye de la lancer (elle marchait sous Windows avant le passage en multi-proc) et là problème !

    En fait je suspend et resume un de mes processus au besoin durant l'exécution. Pour cela j'utilise "os.kill" avec SIGCONT et SIGSTOP du module signal.
    Bien sûr rien de tout cela sous Windows (même pas un petit "os.nice" pour la priorité des processus :'( )

    Je me renseigne et voit que les modules wim32api, et plus spécialement win32process sont ceux utilisés.

    Si je vois bien comment créer et tuer des processus avec ces modules, je ne trouve nul part comment en suspendre/reprendre. Quelqu'un saurait-il comment faire cela ?

    Merci d'avance,
    Benjamin

  2. #2
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Pour ce que tu veux faire, je ne sais pas trop mais pour tuer un processus, je fais ceci (peut-être que cela te permettra de te guider dans ta recherche):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import subprocess
    import ctypes
    a = subprocess.Popen([sys.exec_prefix +os.sep + 'pythonw.exe', '-OO', 'monprog.pyo'])
    ctypes.windll.kernel32.TerminateProcess(int(a._handle), -1)

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse,

    J'ai regardé vite fait ce qu'offre kernel32, et à ce que je vois ce sont les même fonctionnalités que dans win32api et win32process (TerminateProcess, SuspendThread, ResumeThread, ...). Mais je vais quand même creuser un peu plus de ce côté.

    Je ne comprend pas pourquoi c'est si difficile de trouver comment mettre un processus en pause en tout cas. ProcessExplorer le fait par exemple. Ou alors c'est une fause pause du process, ou encore une pause des threads du process ...

    I keep looking

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Effectivement, il semblerait qu'il faille lister tous les threads d'un process et les suspendre. Il y a un code en C++ ici: http://www.codeproject.com/KB/threads/pausep.aspx
    Cela devrait être possible de le porter en Python. Une autre solution serait d'utiliser l'outil pssuspend de SysInternals.

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Je vois que mes craintes sont confirmées ... pas très pratique tout ça.
    Enfin bref, merci encore

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 30/09/2009, 13h54
  2. Process owner d'un fichier ouvert sous windows
    Par theworst dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 04/03/2009, 21h39
  3. Réponses: 1
    Dernier message: 12/06/2008, 13h24
  4. Process Parent sous WIndows NT
    Par HooK dans le forum Windows
    Réponses: 3
    Dernier message: 25/07/2007, 16h59
  5. [Systeme] Process marche sous windows, pas sous linux
    Par Zapan dans le forum Général Java
    Réponses: 12
    Dernier message: 14/01/2006, 14h06

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