D-Bus:Linux 進程間通信的幕後英雄

更新 發佈閱讀 5 分鐘

概念:為什麼我們需要 D-Bus?

在 Linux 的世界裡,不同的process(或稱「進程」)經常需要互相溝通。想像一下, 你的電腦裡有一場盛大的協同作業:

  • 播放器需要接收「播放/暫停」的按鍵訊號。
  • 檔案管理器需要告訴文字編輯器「請幫我打開這個檔案」。
  • 系統服務需要通知桌面「網路已經連線了」。

傳統的 IPC (Inter-Process Communication) 方式, 例如 pipesocketshared memory , 雖然能完成任務, 但它們就像是私下協定的暗號, 缺乏統一的標準。每個程式都要自己處理複雜的協定、尋址和同步問題, 這讓系統變得難以擴展和維護。

D-Bus 的出現, 解決了這些問題。它統一負責所有程式間訊息的收發、路由與廣播,將複雜的通訊細節從應用程式中抽離,讓開發者能更專注於程式本身的邏輯。

寶妮說故事的時間

想像一下,你的伺服器或電腦就像一個高度自動化的「智慧城市」。城市裡有許多大樓(服務程式)、道路(通訊總線), 每個單位各司其職, 而D-Bus就是這個城市中負責郵件和廣播的核心系統。

  • Bus(總郵局與道路網): Bus 是整個小鎮的郵政系統與交通網絡。所有訊息都透過 Bus 傳遞, 確保寄件者與收件者可以互相聯繫。分為兩種類型如下。
    • System Bus(系統郵局)
      處理「系統層級」的重要訊息, 例如 systemd 管理的開關機、NetworkManager 的網路事件…etc。就像城市的中央郵局,每個政府部門都接在這裡。
    • Session Bus(個人郵局)
      處理「單一使用者 session」內應用程式間的訊息,例如桌面應用程式之間的協作。像你租了一棟辦公大樓樓層,裡面是你的私人郵局。

      在 OpenBMC 這種嵌入式系統中,大部分情況只用到 System Bus。

  • Bus Name(大樓地址): 城市裡有很多棟大樓(服務程式), 要寄信就得知道送到哪裡。你可能會看到這兩種名稱的表達方式。
    • Well-known Name(大樓招牌)
      • 範例:org.freedesktop.NetworkManager
      • 一個固定且具備可讀性的名稱, 方便人類識別。有了這個招牌, 開發者一眼就知道該service做什麼。
    • Unique Connection Name(唯一地址)
      • 範例::1.123
      • 每個服務在註冊到 Bus 時系統分配的唯一代號, 像郵遞區號或門牌號碼, 保證不重複。
  • Object Path(部門信箱):同一棟大樓裡面可能有多個部門。
    • 範例:/org/freedesktop/NetworkManager/Settings
    • 表示信件是寄到 NetworkManager 大樓裡的「設定部門」。每個部門可以獨立處理屬於自己的業務。
    • 一個 Service 裡可以有很多 Object, 每個 Object 專門處理自己的業務範圍。
  • Interface(業務手冊): 每個部門的說明書, 記載它能處理的所有業務、可用的功能和規範, 其實就是列出它能做的事。
    • 範例:org.freedesktop.NetworkManager.Settings
    • 一個 Object 可以同時擁有多個 Interface, 像一個部門能同時處理「設定」與「統計」兩類業務。
    • Interface 的細項:(每個 Interface 都有三種互動元素)
    vocus|新世代的創作平台

    最後…

    結構化的來總結一下他:
    城市道路(Bus: System/Session)
    └── 大樓(Service / Bus Name)
    └── 部門(Object Path)
    └── 業務手冊(Interface)
    ├── Method(辦事信:寄信請求工作)
    ├── Property(公告欄:狀態資訊)
    └── Signal(廣播喇叭:主動通知)
    比喻總是不夠精確, D-bus一樣有官方文件可以閱讀, 建議大家如果在工作中或學習上遇到不解的問題, 都要回到SPEC來做確認。很多D-bus相關的文件都可以在這裡面找到:https://www.freedesktop.org/wiki/Software/dbus/?utm_source=chatgpt.com
留言
avatar-img
L'Angolo di Embedded
25會員
26內容數
這裡會有一些我對於OpenBMC, Embedded Software的學習與經驗分享, 本來只在Line社群跟大家互動, 但是有夥伴提出想要看到歷史文章的需求, 於是我決定把它放到這裡, 努力磨練自己的技術和文筆。
L'Angolo di Embedded 的其他內容
2025/09/15
介紹了 IPC (Inter-Process Communication) 和 Sysfs 在 Linux 嵌入式系統中的應用,並以生活化的比喻說明程序間通訊的概念,以及 Sysfs 作為虛擬檔案系統介面,如何簡化硬體存取與系統狀態監控。
2025/09/15
介紹了 IPC (Inter-Process Communication) 和 Sysfs 在 Linux 嵌入式系統中的應用,並以生活化的比喻說明程序間通訊的概念,以及 Sysfs 作為虛擬檔案系統介面,如何簡化硬體存取與系統狀態監控。
2025/09/15
介紹OpenBMC中的電源控制機制,特別是phosphor-state-manager在其中的核心角色。透過比喻和實際程式碼範例,闡述電源狀態轉換流程、不同系統的實作差異以及錯誤處理的重要性,並提供小練習引導讀者更深入瞭解。
2025/09/15
介紹OpenBMC中的電源控制機制,特別是phosphor-state-manager在其中的核心角色。透過比喻和實際程式碼範例,闡述電源狀態轉換流程、不同系統的實作差異以及錯誤處理的重要性,並提供小練習引導讀者更深入瞭解。
2025/09/11
本文深入淺出地介紹systemd在Linux系統中的角色、與傳統SysVInit的差異,以及如何在OpenBMC中應用systemd的service unit file來管理服務,並透過實作範例,幫助讀者理解systemd的運作機制。
2025/09/11
本文深入淺出地介紹systemd在Linux系統中的角色、與傳統SysVInit的差異,以及如何在OpenBMC中應用systemd的service unit file來管理服務,並透過實作範例,幫助讀者理解systemd的運作機制。
看更多
你可能也想看
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這本書從 docker 的角度出發,介紹很多可重複使用的 pattern,除了翻譯某些地方有點怪之外,算是很有趣的一本書,後面很多的 pattern 可以想成是 sidecar 的進階使用方式,在不改變應用程式的情況下,增加不同的功能,相當實用。
Thumbnail
這本書從 docker 的角度出發,介紹很多可重複使用的 pattern,除了翻譯某些地方有點怪之外,算是很有趣的一本書,後面很多的 pattern 可以想成是 sidecar 的進階使用方式,在不改變應用程式的情況下,增加不同的功能,相當實用。
Thumbnail
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
Thumbnail
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
傳說中.....只要Linux喝下名為Wine的葡萄酒,就能獲得運行.exe程式的能力......
Thumbnail
傳說中.....只要Linux喝下名為Wine的葡萄酒,就能獲得運行.exe程式的能力......
Thumbnail
對於上班族來說,在處理文案、報告、新聞稿撰寫,或是資料彙整、簡報內容調整等,要是有一個好用小幫手可以支持,絕對能省不少時間與心力。特別在推出Chat GPT後,雖然有說對不少產品帶來衝擊,但也是工作上的好幫手,不過它的付費版卻不便宜....
Thumbnail
對於上班族來說,在處理文案、報告、新聞稿撰寫,或是資料彙整、簡報內容調整等,要是有一個好用小幫手可以支持,絕對能省不少時間與心力。特別在推出Chat GPT後,雖然有說對不少產品帶來衝擊,但也是工作上的好幫手,不過它的付費版卻不便宜....
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News