Comunicación entre procesos
Qt soporta muchas formas de comunicación con otros procesos que se ejecutan en el mismo sistema o en sistemas diferentes. Existen básicamente tres tipos de mecanismos de comunicación entre procesos:
- Primitivas de sincronización
- Intercambio de datos arbitrarios a nivel de byte
- Paso de mensajes estructurados
Primitivas de sincronización
Qt sólo proporciona una clase para la sincronización explícita entre procesos: QSystemSemaphore. Un QSystemSemaphore es como un QSemaphore accesible por múltiples procesos en el mismo sistema. Se identifica globalmente por una "clave", que en Qt está representada por la clase QNativeIpcKey. Adicionalmente, dependiendo del SO, Qt puede soportar múltiples backends diferentes para compartir memoria; ver la documentación Native IPC Keys para más información y limitaciones.
Es posible usar primitivas regulares de sincronización de hilos tales como mutexes, condiciones de espera, y bloqueos de lectura-escritura, localizados en memoria que es compartida entre procesos. Qt no proporciona ninguna clase para soportar esto, pero las aplicaciones pueden utilizar operaciones de bajo nivel en ciertos sistemas operativos.
Se pueden utilizar otras clases de Qt para proporcionar bloqueos de más alto nivel, como QLockFile, o adquiriendo un recurso único para todo el sistema. Tales técnicas incluyen los puertos TCP o UDP o nombres bien conocidos en D-Bus.
Compartir datos a nivel de byte
Utilizando datos a nivel de byte, las aplicaciones pueden implementar cualquier protocolo de comunicación que deseen. La compartición de datos de bytes puede estar orientada al flujo (serializada) o puede permitir el acceso aleatorio (una condición similar a QFileDevice::isSequential()).
Para la comunicación en serie, Qt proporciona una serie de clases diferentes e incluso módulos completos:
- Pipes y FIFOs: QFile
- Procesos hijo: QProcess
- Sockets: QTcpSocket, QUdpSocket (en Qt Network)
- HTTP(S): QNetworkAccessManager (en Qt Network) y QHttpServer (en Qt HTTP Server)
- CoAP(S): QCoapClient (en Qt CoAP)
Para compartir datos de acceso aleatorio dentro del mismo sistema, Qt proporciona QSharedMemory. Consulta la documentación sobre memoria compartida para obtener información detallada.
Paso de mensajes estructurados
Qt también proporciona una serie de técnicas para intercambiar mensajes estructurados con otros procesos. Las aplicaciones pueden construirse sobre las soluciones a nivel de byte anteriores, como por ejemplo usando QJsonDocument o QXmlStreamReader / QXmlStreamWriter sobre HTTP para realizar JSONRPC o XMLRPC, respectivamente, o QCborValue con QtCoAP.
Los módulos dedicados de Qt para mensajes estructurados y llamadas a procedimientos remotos incluyen:
© 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.