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 :

Fork et wait


Sujet :

Python

  1. #21
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Relisez:
    communicate() returns a tuple (stdout, stderr).

    Note that if you want to send data to the process’s stdin, you need to create the Popen object with stdin=PIPE. Similarly, to get anything other than None in the result tuple, you need to give stdout=PIPE and/or stderr=PIPE too.
    dans votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    output = Popen([join(getcwd(), "test.sh")], shell=True, stdout=PIPE).communicate()[0]
    Comme, je ne vois pas:
    • stderr=PIPE
    • output, errors = Popen

    Ca ne peut pas marcher... RTFM

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 55
    Par défaut
    communicate() returns a tuple (stdout, stderr).

    Note that if you want to send data to the process’s stdin, you need to create the Popen object with stdin=PIPE. Similarly, to get anything other than None in the result tuple, you need to give stdout=PIPE and/or stderr=PIPE too.
    En effet, merci! J'avoue avoir mal lu
    Donc toujours avec les exemples précédents:

    show.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from subprocess import Popen, PIPE
    from os import waitpid, getcwd
    from time import sleep
    from os.path import join
     
    print ("Lancement de la commande")
    output = Popen([join(getcwd(), "test.sh")], shell=True, stdout=PIPE).communicate()[0]
    print ("Attente") # Pour montrer que ce n'est pas la sortie standard
    sleep(2.0)
     
    print ("Sortie")
    sleep(1.0)
    print output
    test.sh:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #!/bin/bash
    echo "some_text" | mail -s subject dest@free.fr -a From:me@free.f
    Modifiant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    output = Popen([join(getcwd(), "test.sh")], shell=True, stdout=PIPE).communicate()[0]
    En: (oui avec stdin, ne sait-on jamais!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    output = Popen([join(getcwd(), "test.sh")], shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE).communicate()[0]
    Puis en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    output = Popen([join(getcwd(), "test.sh")], shell=True, stdout=PIPE, stderr=PIPE).communicate()[0]
    Sortie (dans les deux cas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UgO::Larva> python show.py
    Lancement de la commande
    Attente
    Sortie
    Ca ne peut pas marcher...
    Ne me demandez pas les autres possibilités (avec stderr, stdout et même stdin), je viens aussi de les tester et aucune ne donne le résultat voulu.

    D'autres idées?

  3. #23
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Au lieu de secouer la chose dans tous les sens, il serait sage que vous preniez le temps de réfléchir à ce que vous faites.

    Reprenez le code que je vous ai donné plus tôt.
    Essayez de comprendre ce que çà fait, de le faire tourner...

    Bonne nuit
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #24
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Je rejoins wiztricks, tu t'emmêle les pinceaux dans tout cela.

    Regarde bien le communicate (.communicate()[0])

    test.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    echo "some_text" | mail -s subject dest@free.fr -a From:me@free.f
    test1.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
    ps -Al | grep python
    monerreur
    show.py
    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
    from subprocess import Popen, PIPE
    from os import waitpid, getcwd
    from time import sleep
    from os.path import join
     
    print ("Lancement de la commande")
    output, errors = Popen([join(getcwd(), "test.sh")], stdout=PIPE, stderr=PIPE).communicate()
    print ("Attente")
    sleep(2.0)
     
    print ("Sortie")
    print output
    print ("Erreur")
    print errors
     
    print ("Lancement de la commande")
    output1, errors1 = Popen([join(getcwd(), "test1.sh")], stdout=PIPE, stderr=PIPE).communicate()
    print ("Attente")
    sleep(2.0)
     
    print ("Sortie")
    print output1
    print ("Erreur")
    print errors1
    sortie
    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
    patrice@Zeus:~/Bureau$ python show.py 
    Lancement de la commande
    Attente
    Sortie
     
    Erreur
    /home/patrice/Bureau/test.sh: line 2: mail : commande introuvable
     
    Lancement de la commande
    Attente
    Sortie
    0 S  1000  3250  3041  0  80   0 -   981 wait   ?        00:00:00 python
    0 S  1000  3307  3250  0  80   0 -  5035 wait   ?        00:00:00 python
    0 S  1000  3317  3316  0  80   0 -  7088 poll   ?        00:00:00 python2.6
    0 S  1000  4649  4161  0  80   0 -   983 wait   pts/0    00:00:00 python
    0 S  1000  4650  4649  2  80   0 -  5035 wait   pts/0    00:00:00 python
    0 S  1000  4655  4654  1  80   0 -  1512 select pts/0    00:00:00 python2.6
     
    Erreur
    /home/patrice/Bureau/test1.sh: line 3: monerreur : commande introuvable
    Prend ton temps à tester et surtout analyse

    @+

  5. #25
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 55
    Par défaut
    D'accord, je reviens vous dire quand j'en saurais plus!

    Et merci des conseils

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Fork & wait(0)
    Par stoner dans le forum Débuter
    Réponses: 7
    Dernier message: 14/02/2013, 02h38
  2. [debutant] fork et wait
    Par nyakooza dans le forum Linux
    Réponses: 4
    Dernier message: 26/08/2008, 21h27
  3. fork() wait() waitpid() et companie
    Par guillaume_60 dans le forum POSIX
    Réponses: 3
    Dernier message: 23/05/2006, 12h03
  4. fork wait
    Par lafracas dans le forum POSIX
    Réponses: 2
    Dernier message: 19/03/2005, 11h57
  5. Pas de fork sous Windows?
    Par chezjm dans le forum POSIX
    Réponses: 8
    Dernier message: 11/06/2002, 12h15

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