Communication inter-processus
Qt supporte de nombreuses façons de communiquer avec d'autres processus s'exécutant dans le même système ou dans des systèmes différents. Il existe essentiellement trois types de mécanismes de communication inter-processus :
- Primitives de synchronisation
- Échange de données arbitraires au niveau de l'octet
- Transmission de messages structurés
Primitives de synchronisation
Qt XML ne fournit qu'une seule classe pour la synchronisation inter-processus explicite : QSystemSemaphore. Un QSystemSemaphore est comme un QSemaphore qui est accessible par plusieurs processus dans le même système. Il est globalement identifié par une "clé" qui, dans Qt XML, est représentée par la classe QNativeIpcKey. En outre, selon le système d'exploitation, Qt peut prendre en charge plusieurs backends différents pour le partage de la mémoire ; voir la documentation sur les clés IPC natives pour plus d'informations et les limitations.
Il est possible d'utiliser des primitives ordinaires de synchronisation des threads telles que les mutex, les conditions d'attente et les verrous en lecture-écriture, situés dans la mémoire partagée entre les processus. Qt ne fournit aucune classe pour supporter cela, mais les applications peuvent utiliser des opérations de bas niveau sur certains systèmes d'exploitation.
D'autres classes Qt peuvent être utilisées pour fournir un verrouillage de plus haut niveau, comme QLockFile, ou en acquérant une ressource unique à l'échelle du système. Ces techniques incluent les ports TCP ou UDP ou les noms bien connus dans D-Bus.
Partage de données au niveau de l'octet
En utilisant des données au niveau de l'octet, les applications peuvent mettre en œuvre n'importe quel protocole de communication de leur choix. Le partage de données au niveau de l'octet peut être orienté vers le flux (sérialisé) ou permettre un accès aléatoire (une condition similaire à QFileDevice::isSequential()).
Pour la communication en série, Qt fournit un certain nombre de classes différentes et même des modules complets :
- Pipes et FIFOs : QFile
- Processus enfants : QProcess
- Sockets : QTcpSocket, QUdpSocket (en Qt Network)
- HTTP(S) : QNetworkAccessManager (dans Qt Network) et QHttpServer (dans Qt HTTP Server)
- CoAP(S) : QCoapClient (en) Qt CoAP)
Pour le partage de données à accès aléatoire au sein d'un même système, Qt fournit QSharedMemory. Voir la documentation sur la mémoire partagée pour des informations détaillées.
Passage de messages structurés
Qt fournit également un certain nombre de techniques pour échanger des messages structurés avec d'autres processus. Les applications peuvent s'appuyer sur les solutions au niveau de l'octet ci-dessus, par exemple en utilisant QJsonDocument ou QXmlStreamReader / QXmlStreamWriter sur HTTP pour exécuter JSONRPC ou XMLRPC, respectivement, ou QCborValue avec QtCoAP.
Les modules Qt dédiés aux messages structurés et à l'appel de procédure à distance sont les suivants :
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.