<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          D-BUSLinux桌面應(yīng)用程序通訊

          聯(lián)合創(chuàng)作 · 2023-09-30 02:24

          D-BUS是一個(gè)提供簡(jiǎn)單的應(yīng)用程序互相通訊的途徑的自由軟件工程,它是做為freedesktop.org項(xiàng)目的一部分來(lái)開(kāi)發(fā)的。

          D-Bus 深深地受到了DCOP系統(tǒng)的影響而且將在KDE 4版的release中取代DCOP;他已經(jīng)被實(shí)做在Qt4, GNOME,Windows以及 Maemo 行動(dòng)系統(tǒng)中。GNOME也逐漸的用它來(lái)取代了大部分的早期Bonobo機(jī)制。

          D-Bus 允許程式在其上註冊(cè)以提供服務(wù)給其他的程式。同時(shí)他也提供客戶端程式查詢有哪些服務(wù)是可得的可能性。程式也可註冊(cè)以等待kernel之events比如說(shuō)硬體的熱插拔。

          D-Bus 被以daemon的方式實(shí)做。使用者可以執(zhí)行好幾個(gè)D-Bus的實(shí)體,每個(gè)實(shí)體被稱為一個(gè)channel。通常系統(tǒng)中會(huì)有一個(gè)特權(quán)的channel稱之為 system channel,以及每個(gè)使用者擁有一個(gè)私有的實(shí)體。使用者需要私有的實(shí)體因?yàn)閟ystem channel將有存取的限制。

          System channel主要的公用在於傳遞HAL的訊息給對(duì)這些訊息感興趣的processes。而私有的實(shí)體之功能在於提供程式間無(wú)限制的溝通。

          D-BUS是一個(gè)設(shè)計(jì)目標(biāo)為應(yīng)用程序間通信的消息總線系統(tǒng)。它是個(gè)3層架構(gòu)的進(jìn)程間通信(IPC)系統(tǒng),包括:

          • 函數(shù)庫(kù)libdbus,用于兩個(gè)應(yīng)用程序呼叫聯(lián)系和交互消息。
          • 一個(gè)基于libdbus構(gòu)造的消息,總線守護(hù)進(jìn)程可同時(shí)與多個(gè)應(yīng)用程序相連,并能把來(lái)自一個(gè)應(yīng)用程序的消息路由到0或者多個(gè)其他程序。
          • 一系列基于特定應(yīng)用程序框架的Wrapper庫(kù)。

          D-BUS為了兩個(gè)特定情況而設(shè)計(jì):

          • 同一個(gè)桌面會(huì)話中兩個(gè)桌面應(yīng)用程序的通信,可使得桌面會(huì)話作為整體集成在一起以解決進(jìn)程生命周期的相關(guān)問(wèn)題。
          • 桌面會(huì)話和操作系統(tǒng)的通信,這里操作系統(tǒng)一般而言包括內(nèi)核和系統(tǒng)守護(hù)進(jìn)程。

          所有使用D-BUS的應(yīng)用程序都包含一些對(duì)象,它們一般映射為GObject、QObject、C++對(duì)象、或者Python對(duì)象(也許不需要)。一個(gè)對(duì)象是一個(gè)實(shí)例而不是類型。當(dāng)經(jīng)由一個(gè)D-BUS連接受到一條消息時(shí),該消息是被發(fā)往一個(gè)對(duì)象而不是整個(gè)應(yīng)用程序。

          為了允許消息能指定接受對(duì)象,還要提供引用對(duì)象的方法。在你偏愛(ài)的編程語(yǔ)言中,它也許叫做指針或者引用。但是上述所謂引用一般實(shí)現(xiàn)為與應(yīng)用程序相關(guān)的內(nèi)存地址,因此無(wú)法在應(yīng)用程序之間傳遞。

          為了解決這一問(wèn)題,D-BUS為每個(gè)對(duì)象引入名字。這些名字看起來(lái)像是文件系統(tǒng)路徑,例如一個(gè)對(duì)象可能叫做“/org/kde/kspread /sheets/3/cells/4/5”。易讀的路徑名是受鼓勵(lì)的做法,但也允許使用諸如“/com/mycompany /c5yo817y0c1y1c5b”等,只要它可以為你的應(yīng)用程序所用。

          Namespacing的對(duì)象路徑以開(kāi)發(fā)者所有的域名開(kāi)始(如/org/kde)以避免系統(tǒng)相同進(jìn)程內(nèi)不同代碼模塊互相干擾。

          瀏覽 28
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黑鬼巨大两根一起挤进 | 欧美三区四区 | 亚洲日韩国产精品 | 视频一区二区三区四区久久 | 在线无码一区二区三区 |