Межпроцессное взаимодействие в Qt
Qt предоставляет несколько способов реализации межпроцессного взаимодействия (IPC) в приложениях Qt.
TCP/IP
Многоплатформенная модуль Qt Network предоставляет классы, которые делают программирование сети портативным и простым. Он предлагает высокоуровневые классы (например, QNetworkAccessManager), которые взаимодействуют с помощью определенных протоколов прикладного уровня, и низкоуровневые классы (например, QTcpSocket, QTcpServer, QSslSocket) для реализации протоколов.
Локальный сервер/сокет
Многоплатформенная модуль Qt Network предоставляет классы, которые делают программирование локальной сети портативным и простым. Он предлагает классы QLocalServer и QLocalSocket, которые позволяют осуществлять взаимодействие, подобное сетевому, в локальной среде. Их TCP аналоги могут быть использованы как прямая замена, чтобы взаимодействие работало через сети.
Обмен памяти
Многоплатформенный класс для обмена памяти, QSharedMemory, предоставляет доступ к реализации обмена памяти операционной системы. Он позволяет безопасно получить доступ к сегментам общей памяти нескольким потокам и процессам. Кроме того, QSystemSemaphore может использоваться для управления доступом к ресурсам, которые используются системой, а также для взаимодействия между процессами.
Протокол D-Bus
Модуль Qt D-Bus — это библиотека, доступная только в Unix, которую можно использовать для реализации IPC с помощью протокола D-Bus. Он расширяет механизм Qt «Сигналы и слоты» до уровня IPC, позволяя сигналу, отправленному одним процессом, подключаться к слоту в другом процессе. В документации по модулю Qt D-Bus содержится подробная информация о том, как использовать модуль Qt D-Bus.
Класс QProcess
Многоплатформенный класс QProcess может использоваться для запуска внешних программ как дочерних процессов и для взаимодействия с ними. Он предоставляет API для мониторинга и управления состоянием дочернего процесса. QProcess предоставляет доступ к каналам ввода/вывода дочернего процесса, унаследовав от QIODevice.
Управление сессиями
В Linux/X11, Windows и macOS Qt поддерживает управление сессиями. Сессии позволяют передавать события процессам, например, для уведомления о завершении работы. Затем процессы и приложения могут выполнить все необходимые операции, такие как сохранение открытых документов.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/ipc.html