2013-02-07 1 views
4

두 프로세스간에 데이터를 송수신해야합니다. 그들 중 하나는 Qt (4 또는 5)를 사용할 것입니다. 이 프로세스는 항상 백그라운드 프로세스처럼 실행됩니다.Qt와 C/C++ 사이의 IPC

다른 프로세스가 시작된 다음 argv을 첫 번째 프로세스로 보내고 answer을 수신 할 수 있어야합니다.

두 번째 프로세스는 가능한 한 빨리 시작해야하므로 QtCore를 사용하는 것이 마지막 방법입니다. 의미 그것은 가능한 작고 빠른 될 필요가, 그래서 평범한 외부 라이브러리없이 C/C++ 사용해야합니다.

어떻게 할 수 있습니까?

이것이 가능하지 않다면 두 번째 프로세스에서 QtCore를 사용해야 할 것입니다. QtCore 대 plain C/C++ 때문에 얼마나 느릴 지 알고 있습니까? (시작 시간 관점에서).

감사

편집 :

내가 맥/리눅스/윈도우 호환 가능해야이 같은 QBUS을 사용할 수 없습니다.

+1

Qt 프로세스를 기존 서버로 작성하고 클라이언트가 방금 연결할 수있는 포트에서 수신 대기하지 않는 이유는 무엇입니까? "외부 라이브러리"없이 C 또는 C++에 내장 된 좋은 크로스 플랫폼 IPC 메커니즘은 없지만 각 플랫폼의 코드를 사용자 정의 할 필요없이 네트워크 지원이 필요하다면 libcurl과 같은 것들이 Qt보다 훨씬 가볍습니다. – deong

+0

부스트를 사용하고 있습니까? – cmannett85

+0

@deong QSocket을 사용하다가 QSocket을 읽고 쓰는 것입니다. – alexandernst

답변

4

플랫폼 간 호환이 가능해야하는 경우 각 플랫폼에서 작동해야하는 소켓/명명 된 파이프라는 것이 좋습니다. 소켓 설정은 Should take you to the information you need입니다. 순수한 C++ 응용 프로그램에서 여전히 네트워크 처리 코드가 필요하지만 Qt-Core 및 Qt-Network보다 훨씬 적은 오버 헤드가 있어야합니다.

공유 메모리로도 작업 할 수 있지만 단순화를 위해 소켓 방법을 선호합니다.

+0

나는 소켓으로 갈 것이라고 생각한다. 고맙습니다 :) – alexandernst