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

Qt Discussion :

[Qt4]Lire ce que retourne un programme lancé avec qprocess


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Par défaut [Qt4]Lire ce que retourne un programme lancé avec qprocess
    bonjour,
    je voudrais lancer un programme et lire ce que retourne ce programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    QProcess builder;
    //lancement du programme externe
    builder.startDetached("build_fps", QStringList() << this->edit_xml->text() << this->edit_src->text() << this->edit_fps->text() << preferences::self()->dirs_build);
    //affichage d'une fenêtre qui doit recevoir le texte
    OutputWin::self()->show();
    //écriture du texte de sortie du programme
    OutputWin::self()->text_console->setText(builder.readAll());
    je lance mon programme dans la console puis j'essaie de lancer le programme externe avec le code ci-dessus. le programme externe se lance très bien, affiche plein de choses dans la console mais rien n'est renvoyé dans ma fenêtre


    il y a quelque chose que je fais mal ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut
    Qu'est-ce que ce programme externe "build_fps" ? Affiche-t-il sur stdout ou directement dans la console ?

  3. #3
    Expert confirmé
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Par défaut
    le programme build_fps est en fait un script bash qui écrit sur la console via echo.


    j'ai essayé de faire une fonction slot connectée aux signaux readyReadStandardError et readyReadStandardOutput. mon slot se lance bien mais rien n'est lu

    j'ai oublié de dire que j'étais sous linux

  4. #4
    Membre actif Avatar de minirop
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Par défaut
    et en mettant "./build_fps" ?

  5. #5
    Expert confirmé
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Par défaut
    si je mets ./build_fps, le programme ne se lance plus du tout : il faudrait que je soit dans le répertoire où est build_fps, ce qui n'est pas le cas. je voudrais éviter de me placer dans un répertoire précis, ce qui "figerait" l'application

  6. #6
    Expert confirmé
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Par défaut
    j'ai un peu avancé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QProcess builder;
    builder.setReadChannelMode(QProcess::MergedChannels);
    //builder.start("build_fps", QStringList() << this->edit_xml->text() << this->edit_src->text() << this->edit_fps->text() << preferences::self()->dirs_build);
    builder.start("ls", QStringList() << "-l" << "/");
    OutputWin::self()->show();
    if (!builder.waitForFinished())
        OutputWin::self()->text_console->setText(builder.errorString());
    else
        OutputWin::self()->text_console->setText(builder.readAll());
    pour le ls -l /, ça marche, ça s'affiche dans ma fenêtre. en revanche, quand je change la ligne builder.start (pour prendre celle qui est commentée au dessus), ça me dit quelque chose dans le goût
    Process timed out
    et mon process continue sa petite vie en arrière plan

    bref, ça commence à devenir bon mais pas assez le problème de cette méthode est que ça attend que le process soit fini pour afficher des choses. mon programme externe prend pas mal de temps (le programme fait de la compilation) donc si j'arrive à résoudre le problème de timeout, ça risque de mettre longtemps à s'afficher

    une idée ?

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

Discussions similaires

  1. [WM16] Arret d'un programme lancé avec "ceLanceAppli"
    Par courdi95 dans le forum Windev Mobile
    Réponses: 0
    Dernier message: 20/12/2011, 16h12
  2. Réponses: 6
    Dernier message: 27/03/2009, 13h16
  3. Réponses: 1
    Dernier message: 21/10/2006, 09h29
  4. programmes lances au demarrage
    Par d-a-v-e dans le forum Autres Logiciels
    Réponses: 14
    Dernier message: 28/02/2006, 16h15
  5. Que fait ce programme ?
    Par babar56 dans le forum C
    Réponses: 32
    Dernier message: 16/01/2006, 21h31

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