Bonjour,

Debian/QTCreator last release.

Je rencontre quelques problèmes avec l'usage de QProcess. J'ai créé une fenêtre qui me permet d'indiquer le nom d'un programme à lancer et les arguments à passer.
A partir d'un bouton démarrer, je lance donc le programme grâce à un QProcess.

Dans un premier cas, je lance un programme test1 de ma fenêtre : pas de problème, ça fonctionne très bien.
Deuxième cas, je lance un programme test2 de ma fenêtre : le programme se lance mais bloque !!

J'ai essayé de varier les OpenMode sans succès. Je n'ai pas d'autres besoin dans ce lancement de connaître la fin du processus (pas d'échanges de données).

Et tout cela avec le même code (ci-dessous)

La différence notable entre test1 et test2 est que dans test2 j'accède à un fichier en lecture !!
J'ajoute que, lancés de la console de commande, test1 et test2 se comportent normalement.

Auriez-vous une piste de recherche, je sèche !!!

Merci d'avance, amicalement.

====
Code
====

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
29
30
31
32
33
// QProcess * pr est déclaré dans la classe serveur
 
    serveur::serveur(QWidget *parent) : QMainWindow(parent), ui(new Ui::serveur)
        {
        ui->setupUi(this);
 
        // initialisation de pr
        pr = new QProcess(this->parent());
        // connexion signal - slot
        QObject::connect(pr, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(fin_calcul()));
        }
 
    void serveur::on_bouton_demarrer_clicked()
        {
        // setting de l'environnement
        QStringList env = QProcess::systemEnvironment();
        pr->setEnvironment(env);
        // récupération à partir de QLineEdit du nom de la commande et des paramètres
        QString commande = ui->gene_prog->text();
        QString params = ui->parametres->text();
        if(!commande.isEmpty())
            {
            // lancement du processus
            commande = "uc/" + commande;
            QStringList arguments = params.split(" ");
            pr->start(commande, arguments, QIODevice::NotOpen);
            }
        }
 
    void serveur::fin_calcul()
        {
        ui->bouton_demarrer->setText(QString::fromUtf8("Fin de la génération"));
        }