Communication inter-processus
Qt prend en charge de nombreux moyens de communication avec d’autres processus s’exécutant sur le même système ou sur des systèmes différents. Il existe essentiellement trois types de mécanismes de communication interprocessus :
- Primitives de synchronisation
- Échange de données arbitraires au niveau des octets
- Transmission de messages structurés
Primitives de synchronisation
Qt ne fournit qu'une seule classe pour la synchronisation interprocessus explicite : QSystemSemaphore. Un « QSystemSemaphore » s'apparente à un « QSemaphore » accessible par plusieurs processus au sein d'un même système. Il est identifié globalement par une « clé », représentée dans Qt par la classe QNativeIpcKey. De plus, selon le système d’exploitation, Qt peut prendre en charge plusieurs backends différents pour le partage de mémoire ; consultez la documentation sur les clés IPC natives pour plus d’informations et connaître les limitations.
Il est possible d’utiliser des primitives classiques de synchronisation des threads, telles que les mutex, les conditions d’attente et les verrous de lecture-écriture, situées dans une mémoire partagée entre les processus. Qt ne fournit aucune classe pour prendre cela en charge, mais les applications peuvent recourir à 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 TCP ou UDP ports, ou encore des noms bien connus dans D-Bus.
Partage de données au niveau de l’octet
En utilisant des données au niveau des octets, les applications peuvent implémenter n’importe quel protocole de communication de leur choix. Le partage de données au niveau des octets peut être orienté flux (sérialisé) ou permettre un accès aléatoire (une condition similaire à celle de ` QFileDevice::isSequential()`).
Pour la communication série, Qt fournit un certain nombre de classes différentes, voire des modules complets :
- Canaux et FIFO : QFile
- Processus enfants : QProcess
- Sockets : QTcpSocket, QUdpSocket (dans Qt Network)
- HTTP(S) : QNetworkAccessManager (dans Qt Network) et QHttpServer (en Qt HTTP Server)
- CoAP(S) : QCoapClient (entrant Qt CoAP)
Pour le partage de données en accès aléatoire au sein d’un même système, Qt fournit QSharedMemory. Consultez la documentation sur la mémoire partagée pour plus d’informations.
Passage de messages structurés
Qt propose également plusieurs techniques pour échanger des messages structurés avec d’autres processus. Les applications peuvent s’appuyer sur les solutions au niveau des octets décrites ci-dessus, par exemple en utilisant QJsonDocument ou QXmlStreamReader / QXmlStreamWriter via HTTP pour effectuer respectivement des appels JSONRPC ou XMLRPC, ou encore QCborValue avec QtCoAP.
Les modules Qt dédiés aux messages structurés et à l’appel de procédure à distance comprennent :
© 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.