IPC與Sysfs:Linux系統間溝通與數據存取的利器

更新 發佈閱讀 5 分鐘

概念

IPC = 電腦裡不同process之間的「溝通方式」, 讓它們可以協同工作, 而不是各做各的。想像你的server裡面就像是一個大型辦公室, 辦公室裡面有很多員工在執行不同的工作, 就像…Process在執行不同的任務, 執行任務的時候可能會有一些結果或狀態需要被儲存。 假如該員工負責溫度的探測, 那麼幾點幾分探測到不同sensor的溫度值就應該被完整的記錄下來, 這時候有另外一名員工, 他負責風扇的轉速調整, 他需要sensor的資訊來判斷現在系統是不是過熱, 需要增加風扇的轉速, 但是他本身沒有sensor的資料, 所以他就要透過IPC的機制, 去告訴負責sensor探測與紀錄的員工, 向他索取資料。這就是Process之間的溝通與協作。

員工和員工之間的溝通方式有很多種, 你可以是傳紙條, 也可以發個message, 或是email…etc. Process跟Process之間溝通的方式也有很多種, 以下直接幫大家列一個表格來瞧瞧。生活比喻的這一欄, 對純資工系畢業的我來說覺得有點硬凹, 但是又想要用一個比較生活化的方式讓完全沒有接觸過這個領域的朋友能在腦中有一些想像和畫面, 如果你原本不是這樣的背景, 我覺得可以先簡單這樣理解, 然後再去慢慢研究他的細節, 甚至寫code去實作, 以至於可以真正的懂他的用法還有特點。

raw-image

不得不提一下~ Sysfs

傳統的 IPC(Inter-Process Communication)指的是作業系統在不同user space的process之間提供的通訊機制。這些機制的共同特點是:雙方都是獨立的 process,透過作業系統的 API 交換資料,由 kernel 負責資料在 process 間的傳遞與同步控制。

相比之下,sysfs 並不是傳統意義上的 IPC,而是 Linux kernel 提供給user space的虛擬檔案系統介面(通常掛載在 /sys 目錄下),讓使用者空間的應用程式可以透過讀寫檔案的方式,存取 kernel 物件的property或驅動程式提供的status資訊。對應的讀寫動作會由 kernel 轉換為驅動程式對硬體的操作。

在嵌入式系統中,sysfs 常用於讀取感測器數據(如溫度、電壓), 檢查系統狀態(如開機原因、韌體版本), 控制裝置行為(如開關 LED、設定頻率), 以及操作 GPIO 腳位等。它的優點是介面簡單、易於除錯, 開發者可以直接用 catecho 等命令進行存取, 無需撰寫複雜的通訊程式碼。

之所以會這麼突然的想講這個, 一方面是因為他使用到的機率真的好高, 二來是power control的code隨便一滑就有看到…類似 bmc_state_manager.cpp 中, 有個函式 discoverLastRebootCause() 會讀取:/sys/class/watchdog/watchdog0/bootstatus, 這就是很典型的使用方式。Sysfs 提供了一個簡單的檔案介面, 而kernel 驅動已經幫你對接硬體狀態, 讀取檔案就能拿到結果來判斷上一次重啟的原因。

以上, 我們講了IPC又講了Sysfs, 那把它們串起來會是什麼概念呢?想像一下這個流程:

  1. 有一支driver去跟硬體sensor, controller…etc拿了一個資訊回來, 更新到Sysfs的某一個目錄
  2. 某 X application到這個Sysfs的目錄下把值讀回來(可以是polling也可以是event trigger的方式), 並且慷慨地把它放在D-bus的某一個Object Path, interface ….property上面。
  3. 其他的applications可以註冊signal, 等待這個值有變化再去讀, 又或者直接去property把值讀回來…etc.

皆大歡喜!!所有需要這個值的應用程式都可以順利的得到他了!

留言
avatar-img
L'Angolo di Embedded
22會員
26內容數
這裡會有一些我對於OpenBMC, Embedded Software的學習與經驗分享, 本來只在Line社群跟大家互動, 但是有夥伴提出想要看到歷史文章的需求, 於是我決定把它放到這裡, 努力磨練自己的技術和文筆。
L'Angolo di Embedded 的其他內容
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的運作機制。
2025/09/09
本文簡易地介紹作業系統中 Process 的概念,並以 OpenBMC 為例,說明在嵌入式系統中如何有效管理 Process,避免因資源限制和複雜的 process 互動造成系統不穩定。
2025/09/09
本文簡易地介紹作業系統中 Process 的概念,並以 OpenBMC 為例,說明在嵌入式系統中如何有效管理 Process,避免因資源限制和複雜的 process 互動造成系統不穩定。
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
下載處: 安裝msi  https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 或單獨使用 https://the.earth.li/~sgtatham/putty/latest/w64/pscp.exe  安裝好可以
Thumbnail
下載處: 安裝msi  https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 或單獨使用 https://the.earth.li/~sgtatham/putty/latest/w64/pscp.exe  安裝好可以
Thumbnail
一、什麼是Web Service?   簡單說就是「服務」的概念,人與人間、電腦與電腦間都是一樣的,一個是人與人的一來一回交流,媒介是語言中文,另一個則是個人電腦與伺服器的交流,媒介是HTTP/Internet,那麼有了媒介,就會有共同格式才能做
Thumbnail
一、什麼是Web Service?   簡單說就是「服務」的概念,人與人間、電腦與電腦間都是一樣的,一個是人與人的一來一回交流,媒介是語言中文,另一個則是個人電腦與伺服器的交流,媒介是HTTP/Internet,那麼有了媒介,就會有共同格式才能做
Thumbnail
如果實在找不到可用的替代軟體,或者就是要用指定的軟體不可,那麼虛擬機器可以作為在使用Linux時的一個應對方案。
Thumbnail
如果實在找不到可用的替代軟體,或者就是要用指定的軟體不可,那麼虛擬機器可以作為在使用Linux時的一個應對方案。
Thumbnail
電腦的運作需要仰賴許多的硬體與軟體,統稱電腦系統 (computer system)。這篇文章會概略地介紹電腦系統中的重要角色,以及它們如何相互合作,來完成複雜的工作,比如說讓無所事事的宅宅如我,假日可以躲在房間玩一整天的遊戲。 電腦、程式、與使用者 說到電腦,你的腦中會浮現什麼呢? 是螢幕
Thumbnail
電腦的運作需要仰賴許多的硬體與軟體,統稱電腦系統 (computer system)。這篇文章會概略地介紹電腦系統中的重要角色,以及它們如何相互合作,來完成複雜的工作,比如說讓無所事事的宅宅如我,假日可以躲在房間玩一整天的遊戲。 電腦、程式、與使用者 說到電腦,你的腦中會浮現什麼呢? 是螢幕
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
新系統建構時,可考慮採購建置VM機器,DB機器,備份機器以及網路設備等硬體機器。
Thumbnail
新系統建構時,可考慮採購建置VM機器,DB機器,備份機器以及網路設備等硬體機器。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News