프로세스 간 통신

Qt는 같은 시스템이나 다른 시스템에서 실행되는 다른 프로세스와 통신하는 다양한 방법을 지원합니다. 기본적으로 세 가지 유형의 프로세스 간 통신 메커니즘이 있습니다:

  1. 동기화 프리미티브
  2. 임의의 바이트 수준 데이터 교환
  3. 구조화된 메시지 전달

동기화 프리미티브

Qt는 명시적인 프로세스 간 동기화를 위한 클래스를 QSystemSemaphore 하나만 제공한다. QSystemSemaphore 은 같은 시스템의 여러 프로세스에서 액세스할 수 있는 QSemaphore 과 같습니다. 이 클래스는 "키"로 전역적으로 식별되며, Qt에서는 QNativeIpcKey 클래스로 표현됩니다. 또한 OS에 따라 Qt는 메모리 공유를 위한 여러 가지 백엔드를 지원할 수 있으며, 자세한 정보와 제한 사항은 네이티브 IPC 키 문서를 참조하십시오.

프로세스 간에 공유되는 메모리에 있는 뮤텍스, 대기 조건, 읽기-쓰기 잠금과 같은 일반 스레드 동기화 프리미티브를 사용할 수 있습니다. Qt는 이를 지원하는 클래스를 제공하지 않지만, 특정 운영 체제에서는 응용 프로그램에서 저수준 연산을 사용할 수 있습니다.

QLockFile 와 같은 더 높은 수준의 잠금을 제공하거나 시스템 전체의 고유한 리소스를 획득하는 데 다른 Qt 클래스를 사용할 수 있습니다. 이러한 기술에는 TCP 또는 UDP 포트 또는 D-Bus 의 잘 알려진 이름이 포함됩니다.

바이트 수준 데이터 공유

애플리케이션은 바이트 단위 데이터를 사용하여 원하는 통신 프로토콜을 구현할 수 있습니다. 바이트 데이터의 공유는 스트림 지향(직렬화)이거나 랜덤 액세스( QFileDevice::isSequential()와 유사한 조건)를 허용할 수 있습니다.

직렬 통신의 경우, Qt는 다양한 클래스와 전체 모듈을 제공합니다:

동일한 시스템 내에서 랜덤 액세스 데이터 공유를 위해 Qt는 QSharedMemory 를 제공합니다. 자세한 내용은 공유 메모리 문서를 참조하십시오.

구조화된 메시지 전달

Qt는 구조화된 메시지를 다른 프로세스와 교환하는 여러 가지 기법도 제공합니다. 애플리케이션은 위의 바이트 수준 솔루션 위에 구축할 수 있는데, 예를 들어 HTTP를 통해 QJsonDocument 또는 QXmlStreamReader / QXmlStreamWriter 를 사용하여 각각 JSONRPC 또는 XMLRPC를 수행하거나 QtCoAP를 사용하여 QCborValue 를 사용할 수 있습니다.

구조화된 메시지와 원격 프로시저 호출을 위한 전용 Qt 모듈에는 다음이 포함됩니다:

© 2025 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.