FAQ Qt FAQ Qt Creator FAQ PyQt & PySide

FAQ QtConsultez toutes les FAQ

Nombre d'auteurs : 26, nombre de questions : 298, dernière mise à jour : 6 mai 2017 

 
OuvrirSommaireModulesQt CoreQProcess

Qt fournit la classe QProcess. Cette classe permet de contrôler l'exécution d'une application dans un nouveau process. Il est ainsi possible de contrôler :

La fonction start() crée un processus enfant (qui sera fermé si le processus parent est fermé) avec, pour paramètres :

  • le chemin de l'exécutable,
  • la liste des paramètres d'entrée de l'exécutable,
  • un mode d'ouverture pour interagir avec l'application par le biais des entrées/sorties standards.

Cette classe possède d'autres fonctions pour lancer une application :

  • QProcess::execute : équivalent à start(). Bloquante jusqu'à la fin de l'exécution de l'application lancée ;
  • QProcess::startDetached : permet de lancer une application dans un processus indépendant. Peut donner le PID du process créé.

Il est bon de remarquer que ces fonctions :

  • ont des paramètres similaires à ceux de start() : le chemin de l'exécutable, et la liste des paramètres d'entrée de l'exécutable ;
  • ne donnent pas de moyen pour interagir avec le process par le biais des entrées/sorties standard ;
  • ces deux fonctions sont des fonctions statiques et peuvent être appelées sans création d'un QProcess. Dans ce cas, les variables d'environnement et le répertoire d'exécution seront les mêmes que ceux de l'application courante.
Exemple utilisant QProcess::startDetached
CacherSélectionnez
Mis à jour le 7 juillet 2009  par Yan Verdavaine

QProcess permet de lancer des applications externes (voir ici). Elle permet surtout d'interagir avec l'application à la manière d'un pipe au travers des entrées/sorties standards de l'application. Ainsi le troisième paramètre de la fonction start permet de spécifier quel type d'interaction on veut utiliser (par défaut, les deux types sont activés) :

  • Mode read : récupération de la sortie standard (stdout) et d'erreur (stderr) ;
  • Mode write : écriture sur l'entrée standard de l'application (stdin).

QProcess utilise les méthodes définies par QIODevice pour ces interactions. Pour la récupération des sorties, il faut faire attention au canal que l'on est en train de lire.

De plus QProcess fournit deux signaux intéressants, qui indiquent si des données venant d'une des sorties sont arrivées.

  • readyReadStandardOutput () : des données provenant de la sortie standard sont prêtes à être traitées
  • readyReadStandardError () : des données provenant de la sortie d'erreur sont prêtes à être traitées

Ces interactions sont aussi possibles à l'aide de fichiers :

  • setStandardErrorFile : fichier où l'on récupère la sortie d'erreur de l'application lancée ;
  • setStandardOutput : fichier où l'on récupère la sortie standard de l'application lancée ;
  • setStandardInputFile : fichier contenant les données à envoyer sur l'entrée standard de l'application lancée.

Sous Windows XP, un programme lisant l'entrée standard (stdin) en parallèle de son IHM peut se bloquer lorsqu'il est exécuté en process enfant. Ce défaut est normalement corrigé avec Windows Vista.

Mis à jour le 7 mai 2012  par Yan Verdavaine

Lien : Comment ouvrir une application à partir de Qt ?
Téléchargement : TestQProcess

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 - 2017 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.