Qt進程間通信


Qt 提供了四種進程間通信的方式:

  1. 使用共享內存(shared memory)交互:這是 Qt 提供的一種各個平台均有支持的進程間交互的方式。
  2. TCP/IP:其基本思想就是將同一機器上面的兩個進程一個當做服務器,一個當做客戶端,二者通過網絡協議進行交互。除了兩個進程是在同一台機器上,這種交互方式與普通的 C/S 程序沒有本質區別。Qt 提供了 QNetworkAccessManager 對此進行支持。
  3. D-Bus:freedesktop 組織開發的一種低開銷、低延遲的 IPC 實現。Qt 提供了 QtDBus 模塊,把信號槽機制擴展到進程級別(因此我們前面強調是“普通的”信號槽機制無法實現 IPC),使得開發者可以在一個進程中發出信號,由其它進程的槽函數響應信號。

  

D_BUS是一種低開銷、低延遲的進程間通信機制。Qt提供了QtDBus模塊,QtDBus模塊使用D-Bus協議,把信號與槽機制(Signal and Slot)擴展到進程級別,使得開發者可以在一個進程中發出信號,可以再其他進程定義槽來響應其他進程發出的信號。

    D-Bus是一種高級的進程間通信機制,由freedesktop.org項目提供,使用GPL許可證發行。D-Bus最主要的用途是在Linux桌面環境為進程提供通信,同時能將Linux桌面環境和Linux內核事件作為消息傳遞到進程。
D-Bus的主要概率為總線,注冊后的進程可通過總線接收或傳遞消息,進程也可注冊后等待內核事件響應,例如等待網絡狀態的轉變或者計算機發出關機指令。
目前,D-Bus已被大多數Linux發行版所采用,開發者可使用D-Bus實現各種復雜的進程間通信任務。 D-Bus是一個消息總線系統,其功能已涵蓋進程間通信的所有需求,並具備一些特殊的用途。D-Bus是三層架構的進程間通信系統,其中包括: 接口層:接口層由函數庫libdbus提供,進程可通過libdbus庫使用D-Bus的能力。 總線層:總線層實際上是由D-Bus總線守護進程提供的。在Linux系統啟動時運行,負責進程間的消息路由和傳遞,其中包括Linux內核和Linux桌面環境的消息傳遞。 包裝層:包裝層一系列基於特定應用程序框架的Wrapper庫。 在QT中的Dbus是使用的Dbus的包裝層libdbus-qt. 要查看Dbus總線上的服務和對象可以借助d-feet 和qdbusviewer 要發送信號可以使用dbus-send,要查看Dbus上的消息流可以使用dbus-monitor

 

4.QCOP(Qt COmmunication Protocol):QCOP 是 Qt 內部的一種通信協議,用於不同的客戶端之間在同一地址空間內部或者不同的進程之間的通信。目前,這種機制只用於 Qt for Embedded Linux 版本。

 

http://www.360doc.com/content/18/0118/20/52164085_723170318.shtml

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM