Межпроцессное взаимодействие в 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-6.2/ipc.html