プロセス間通信

Qt は、同じシステムや異なるシステムで動作している他のプロセスと通信するための様々な方法をサポートしています。プロセス間通信には、基本的に3つの種類があります:

  1. 同期プリミティブ
  2. 任意のバイトレベルデータの交換
  3. 構造化メッセージの受け渡し

同期プリミティブ

Qt は、明示的なプロセス間同期を行うためのクラスを1つだけ提供しています:QSystemSemaphoreQSystemSemaphore は、同じシステム内の複数のプロセスからアクセス可能なQSemaphore のようなものです。Qt ではQNativeIpcKey クラスで表されます。さらに、OSによっては、Qtはメモリを共有するための複数の異なるバックエンドをサポートすることがあります。詳細と制限については、Native IPC Keysのドキュメントを参照してください。

プロセス間で共有されるメモリにあるミューテックス、待機条件、読み書きロックなどの通常のスレッド同期プリミティブを使用することができます。Qt はこれをサポートするクラスを提供していませんが、アプリケーションは特定のオペレーティング・システム上で低レベルの操作を使用することができます。

他の Qt クラスを使用して、QLockFile のような高レベルのロックを提供したり、一意のシステム全体のリソースを取得したりすることができます。このようなテクニックには、TCPUDP ポート、あるいはD-Bus のよく知られた名前などがあります。

バイトレベルデータの共有

バイトレベルのデータを使用することで、アプリケーションは任意の通信プロトコルを実装することができます。バイトデータの共有は、ストリーム指向(シリアル化)にも、ランダムアクセス(QFileDevice::isSequential() と同様の条件)にもできます。

シリアル通信のために、Qt は様々なクラスと完全なモジュールを提供しています:

同一システム内でのランダムアクセスによるデータ共有のために、Qt はQSharedMemory を提供しています。詳細については、Shared Memory のドキュメントを参照してください。

構造化メッセージパッシング

Qt は、他のプロセスと構造化されたメッセージを交換する技術も提供しています。例えば、QJsonDocumentQXmlStreamReader /QXmlStreamWriter over HTTP を使って JSONRPC や XMLRPC を実行したり、QCborValue with QtCoAP を使ったりすることができます。

構造化メッセージとリモートプロシージャコール専用の Qt モジュールには以下のものがあります:

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。