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:
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:
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 :calim2:
:merci: