在 Linux 系統編程中,信號(Signal)是一種非常微妙的機制。初學者往往只會用簡單的 signal() 函數來註冊回調,但在實際的工程開發中,sigaction() 才是真正的“工業級”標準。 為什麼?因為 sigaction 不僅能捕捉信號,還能讓我們精確控制信號處理函數執行期間的屏蔽行為。本文將結合詳細的代碼案例,帶你深入理解 sigaction 的核心機制,特
在Linux進程間通信(IPC)的世界裏,我們已經熟悉了匿名管道(pipe)——那個只能在父子、兄弟等“家庭成員”之間使用的“內線電話”。它簡單、高效,但它的“血緣”限制也讓我們在面對兩個毫無關係的獨立進程時束手無策。 這時,我們需要一個“公共電話亭”,任何知道號碼(路徑)的進程都可以拿起聽筒進行通話。這個“公共電話亭”,就是命名管道(FIFO,F
當我們使用Linux管道(Pipe)時,我們知道數據從一端流入,從另一端流出,彷彿通過一個無形的通道。但這個“通道”並非無限大,它實際上是內核中的一塊內存,我們稱之為管道緩衝區(Pipe Buffer)。 這個緩衝區的大小,直接決定了在“對講機”的另一端(讀者)來得及接收之前,我們(寫者)最多能“喊”出多少話而不會被“憋住”(阻塞)。那麼,這個看不見摸不着的“秘密容器”,我