Linux程序間通訊 IPC 之上篇

2021-09-11 07:36:26 字數 852 閱讀 6959

大型應用系統需要眾多程序協作。最早的程序間通訊是unix平台。對unix發展作出重大貢獻的兩大主力是at&t的貝爾實驗室和bsd(加州大學伯克利分校的伯克利軟體發布中心)。因此,unix程序間通訊可以分為:

unix ipc包括管道、fifo、訊號。

system v ipc 分為system v 訊息佇列、system v 訊號燈、system v共享記憶體。

posix ipc 包括posix訊息佇列、posix訊號燈、posix共享記憶體。

linux程序間通訊(ipc)自unix平台程序間通訊手段繼承而來。

#1 linux程序間通訊(ipc)的幾種手段 #

## # 1.1 管道(pipe)及有名管道(name pipe) # ##

管道可以用於具有親緣關係程序間的通訊,有名管道客服了管道沒有名字的限制。有名管道不考慮程序有沒有親緣關係,允許他們通訊。

管道標頭檔案:

#include

## # 1.2 訊號 (signal)# ##

訊號與中斷的原理類似,是程序間唯一的非同步通訊進製,可以看作是非同步通知,通知接收程序有哪些事情發生了。程序通過訊號可以傳遞附加訊息,程序還可以傳送訊號給自身。

訊號來自於硬體或者軟體。硬體**包含鍵盤或者其他硬體故障,軟體**包含kill函式,alarm、raise、settimer、sigqueue函式和算數異常。

訊號標頭檔案:

#include

## 1.3 訊息佇列(message) ##

也稱報文佇列,訊息佇列是訊息的鏈結表。

有足夠許可權的程序可以向佇列中新增訊息,被賦予讀許可權的程序則可以走佇列中的訊息。訊息佇列客服了訊號承載資訊量少,管道只能承載無格式位元組流及快取區大小受限等缺點。

Linux程序間通訊 IPC

linux下的程序通訊手段基本上是從unix平台上的程序通訊手段繼承而來的。而對unix發展做出重大貢獻的兩大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序間通訊方面的側重點有所不同。前者對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v...

Linux程序間通訊(IPC)

程序通訊有例如以下一些目的 a 傳輸資料 乙個程序須要將它的資料傳送給還有乙個程序。傳送的資料量在乙個位元組到幾m位元組之間 b 共享資料 多個程序想要操作共享資料。乙個程序對共享資料的改動,別的程序應該立馬看到。c 通知事件 乙個程序須要向還有乙個或一組程序傳送訊息。通知它 它們 發生了某種事件 ...

Linux程序 程序間通訊IPC

一 linux程序 1 程序的記憶體映像 2 解釋 bss段 在採用段式記憶體管理的架構中,bss段 bss segment 通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文block started by symbol的簡稱。bss段屬於靜態記憶體分配。資料段 在採用段式記...