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 :

Exécution de deux commandes DOS en pipe avec QProcess


Sujet :

Qt

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 33
    Points : 28
    Points
    28
    Par défaut Exécution de deux commandes DOS en pipe avec QProcess
    Bonjour,

    Je travaille sous Windows XP SP2 et Qt 4.5.1

    Voilà mon problème: Je souhaite exécuter deux commandes DOS en pipe avec QProcess. Voici la commande complète:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\\PostgreSQL\\8.4\\bin\\shp2pgsql.exe -dDI shapefile shape_import_table | C:\\PostgreSQL\\8.4\\bin\\psql.exe -d amsdb -U amsdb -p 5433
    En gros ces commandes doivent importer le contenu d'un fichier shape dans une BD Postgresql. Tout est bon pour la connexion à la BD (d'ayeur c'est pour ça que je met ce sujet en dehors du sous-forum SGBD de ce forum).

    J'ai vu la doc de QProcess et j'ai essayé d'appliquer. Je n'ai pas d'erreur de compilation mais mon programme se plante à l'exécution. Mon code est le suivant:
    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
    25
    26
    27
    28
     
        cmd1 = new QProcess;
        cmd1->setProcessChannelMode(QProcess::ForwardedChannels);
        QString prg1("C:\\PostgreSQL\\8.4\\bin\\shp2pgsql.exe");
        QStringList args1;
        args1 << "-dDI";
        args1 << shapefile; //shapefile est une QString représentant le nom du fichier shape à importer à là BD
        args1 << "shape_import_table";
     
        cmd2 = new QProcess;
        cmd2->setProcessChannelMode(QProcess::ForwardedChannels);
        QString prg2("C:\\PostgreSQL\\8.4\\bin\\psql.exe");
        QStringList args2;
        args2 << "-d";
        args2 << "amsdb";
        args2 << "-U";
        args2 << "amsdb";
        args2 << "-p";
        args2 << "5433";
     
        cmd1->setStandardOutputProcess(cmd2);
        int res1 = cmd1->execute(prg1,args1);
        int res2 = cmd2->execute(prg2,args2);
        res = QString::number(res1) + QString::number(res2);
        QMessageBox::critical(0,"RES Process", res);
     
        cmd1->~QProcess();
        cmd2->~QProcess();
    J'espère que quelqu'un ici a une idée


  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    En fait il fallait utiliser start à la place de execute pour que ça marche impec!

    Merci quand même

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

Discussions similaires

  1. Exécution de plusieurs commandes DOS en java
    Par tomzdi dans le forum Général Java
    Réponses: 3
    Dernier message: 03/07/2013, 19h27
  2. Réponses: 3
    Dernier message: 10/09/2009, 11h08
  3. exécution de multiples commandes DOS
    Par linalin dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 01/05/2008, 04h53
  4. Exécution d'une commande DOS
    Par gobgob dans le forum VBScript
    Réponses: 6
    Dernier message: 19/09/2007, 12h23
  5. [VB]Problème d'exécution d'une commande dos...
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 17/02/2006, 12h28

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