이 페이지에서

프로세스 간 통신

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

  1. 동기화 기본 요소
  2. 임의의 바이트 단위 데이터 교환
  3. 구조화된 메시지 전달

동기화 프리미티브

Qt는 명시적인 프로세스 간 동기화를 위해 단 하나의 클래스인 ` QSystemSemaphore`만을 제공합니다. ` QSystemSemaphore `는 동일한 시스템 내의 여러 프로세스에서 접근할 수 있는 ` QSemaphore `과 유사합니다. 이는 "키"로 전역적으로 식별되며, Qt에서는 ` QNativeIpcKey ` 클래스로 표현됩니다. 또한 OS에 따라 Qt는 메모리 공유를 위한 여러 가지 백엔드를 지원할 수 있습니다. 자세한 내용과 제한 사항에 대해서는 네이티브 IPC 키(Native IPC Keys ) 문서를 참조하십시오.

프로세스 간에 공유되는 메모리에 위치한 뮤텍스(mutex), 대기 조건(wait condition), 읽기-쓰기 잠금(read-write lock)과 같은 일반적인 스레드 동기화 기본 요소를 사용할 수 있습니다. Qt는 이를 지원하는 클래스를 제공하지 않지만, 애플리케이션은 특정 운영 체제에서 저수준 연산을 사용할 수 있습니다.

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

바이트 단위 데이터 공유

바이트 단위 데이터를 사용하여 애플리케이션은 원하는 모든 통신 프로토콜을 구현할 수 있습니다. 바이트 데이터 공유는 스트림 기반(직렬화)일 수도 있고, 임의 접근을 허용할 수도 있습니다( QFileDevice::isSequential()와 유사한 조건).

직렬 통신을 위해 Qt는 다양한 클래스와 심지어 완전한 모듈까지 제공합니다:

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

구조화된 메시지 전달

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

구조화된 메시지와 원격 프로시저 호출을 위한 전용 Qt 모듈은 다음과 같습니다:

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