Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
801 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [Python] Gestion de processus

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Python] Gestion de processus

n°1216923
AirbaT
Connection timed out
Posté le 06-10-2005 à 18:16:46  profilanswer
 

Je veux manipuler plusieurs programme via une appli python, pour faire entre autre quelque chose de ce genre:
 

Code :
  1. p = j_execute('/usr/bin/commande arg1 arg2 arg3')
  2. while p.est_actif():
  3.       if heure < heure_de_fin:
  4.              time.sleep(1)
  5.       else:
  6.              je_kill(p)
  7.              break


Je pensais assez vite arriver à mes fins, puisque les modules et fonctions ne manquent pas. Mais pourtant...
J'ai commencé avec Python 2.3.5 et les module os, popen2. Rien à faire.
J'ai installé Python 2.4, avec le module subprocess. Rien à faire.
 
Le problème est toujours le meme, quelque soit la fonction, quand le programme se termine avant l'heure_de_fin, il fait quitter mon appli python.  
J'ai essayé d'utiliser le module signal, pour capturer le signal QUIT ou KILL renvoyé par le programme. Ca fonctionne. Sauf que avec les threads, on ne peut utiliser signal que dans le thread principal :/ Donc je suis coincé.
Si quelqu'un peut me dépanner, il va sauver une appli python de terribles os.fork(), suivis de os.system('for i in `pidof appli`; do kill -9 $i; done').
 


---------------
Fly you fool
mood
Publicité
Posté le 06-10-2005 à 18:16:46  profilanswer
 

n°1216947
Taz
bisounours-codeur
Posté le 06-10-2005 à 18:47:38  profilanswer
 

je n'en crois pas un mot ...

n°1216961
AirbaT
Connection timed out
Posté le 06-10-2005 à 19:05:33  profilanswer
 

Code :
  1. #! /usr/bin/env python
  2. from subprocess import Popen,PIPE
  3. import os, time
  4. cmd = 'quelque-chose -a -b fichier.cap'
  5. p = Popen(cmd,shell=True,stdin=PIPE,stdout=PIPE,close_fds=True)
  6. print "ok",p.pid
  7. while True:
  8.         if p.poll() == None:
  9.                 print "Running"
  10.                 time.sleep(1)
  11.         else:
  12.                 print "End"
  13.                 print p.stdout.read()
  14.                 break

L'exécution:

airbat@Lhynn ~/code/projet $ ./test.py  
ok 28904
Running
Running
Running
Running
Running
Running
Running
Running
Running
Running
Running
Quitter
airbat@Lhynn ~/code/projet $


:/


---------------
Fly you fool
n°1216963
AirbaT
Connection timed out
Posté le 06-10-2005 à 19:07:26  profilanswer
 

Code :
  1. if( ret == SUCCESS ) kill( 0, SIGQUIT );
  2.     if( ret == FAILURE ) kill( 0, SIGTERM );
  3.     _exit( ret );


La fin du code du programme en question. Si ça peut aider...


---------------
Fly you fool
n°1217006
Taz
bisounours-codeur
Posté le 06-10-2005 à 19:56:19  profilanswer
 

???

n°1217035
AirbaT
Connection timed out
Posté le 06-10-2005 à 20:24:29  profilanswer
 

A noter qu'en remplaçant ma commande par 'uptime', tout se passe comme prévu.

airbat@Lhynn ~/code/projet $ ./test.py  
ok 29080
Running
Fin
 20:17:31 up  8:10,  6 users,  load average: 0.11, 0.19, 0.09


---------------
Fly you fool

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [Python] Gestion de processus

 

Sujets relatifs
Python s'utilise de quel façopnGestion des options/ parametres en ligne de commande
Lien symbolique python[c++/Python] Passer une instance c++ à un script python
[python, regexp] un truc beteUtiliser un logiciel grâce à Python
NTPort Library et Dev-C++ ? Gestion COM1/LPT1gestion port série et prammèle sous XP/2000
frontpage et gestion de site webEBP MILLESIME GESTION COMMERCIALE 2004
Plus de sujets relatifs à : [Python] Gestion de processus


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR