2013-02-07 59 views
4

我需要在兩個進程之間發送/接收數據。其中一人將使用Qt(4或5)。 該進程將一直運行(如後臺進程)。Qt和C/C++之間的IPC

其他進程將啓動,然後它應該能夠發送argv到 的第一個進程,並從它接收一些answer

第二個過程必須儘可能快地啓動,所以使用QtCore是最後一個資源。這意味着我需要儘可能小而快,所以我需要使用普通的C/C++,而不需要任何外部庫。

任何想法如何完成?

如果這是不可能的,我將不得不在第二個過程中使用QtCore。你知道由於QtCore與普通的C/C++相比,它會減慢多少? (就啓動時間而言)。

問候

編輯:

我不能使用QBUS,因爲這必須的Mac/Linux/Windows的兼容。

+1

爲什麼不直接把Qt進程寫成傳統的服務器,讓它監聽任何客戶端可以連接的端口?在沒有「外部庫」的情況下,沒有內置在C或C++中的良好的跨平臺IPC機制,但是像libcurl這樣的東西比Qt輕很多,如果你只需要一點網絡支持而不需要爲每個平臺定製代碼。 – deong

+0

你在使用Boost嗎? – cmannett85

+0

@deong你的意思是使用QSocket,然後只是讀/寫/從它? – alexandernst

回答

4

如果它需要完全跨平臺兼容,那麼最好的辦法就是命名套接字/命名管道,它應該可以在每個平臺上工作。 Should take you to the information you need用於套接字設置。在純粹的C++應用程序中仍然需要一些網絡處理代碼,但它應該比Qt-Core和Qt-Network的開銷小得多。

你也可以用共享內存來做,但爲了簡單起見,我更喜歡socket方法。

+0

我想我會帶插座。謝謝 :) – alexandernst