程序間通訊方式 綜述

2021-09-13 11:43:08 字數 1341 閱讀 7102

linux程序間一共有六種通訊方式:

1.管道:無名管道(pipe)和有名管道(fifo)

2.訊號(signal)

3.訊號量(semaphore)

4.訊息佇列(messagequeue)

5.共享記憶體(shared memory)

6.套接字(socket)

1.管道:

管道分為無名管道(pipe)和有名管道(fifo)。

無名管道是一種半雙工的通訊方式,資料只能往乙個方向流動,且只能在有親緣關係的程序之間使用,程序間的親緣關係一般是指父子程序;

有名管道也是一種半雙工的通訊方式,可以再沒有親緣關係的程序之間通訊;

有名管道和無名管道的主要區別在於,命名管道有乙個名字,命名管道的名字對應於乙個磁碟索引節點,有了這個檔名,任何程序有相應的許可權都可以對它進行訪問。

2.訊號(signal):

3.訊號量(semaphore):

訊號量是一種計數手段,可以用來控制多個程序對共享資源的訪問。經常作為一種鎖機制,防止乙個程序在訪問共享資源時,有其他的程序也來訪問該資源。因此作為程序間以及統一程序不同執行緒之間的同步手段。

4.訊息佇列(messagequeue):

由訊息的鍊錶,存放在核心中並由訊息佇列識別符號標識。訊息佇列克服了訊號傳遞資訊少、管道只能承載無格式位元組流以及緩衝區大小受限等缺點。

訊息佇列是訊息的鏈結表,包括posix訊息佇列system v訊息佇列。有足夠許可權的程序可以向佇列中新增訊息,被賦予讀許可權的程序則可以讀走佇列中的訊息。訊息佇列克服了訊號承載資訊量少,管道只能承載無格式位元組流以及緩衝區大小受限等缺點

5.共享記憶體(shared memory)

共享記憶體就是對映一段能被其他程序所訪問的記憶體,這段共享記憶體由乙個程序建立,但多個程序都可以訪問。共享記憶體是最快的 ipc 方式,它是針對其他程序間通訊方式執行效率低而專門設計的。它往往與其他通訊機制,如訊號量,配合使用,來實現程序間的同步和通訊。

使得多個程序可以訪問同一塊記憶體空間,是最快的可用ipc形式。是針對其他通訊機制執行效率較低而設計的。往往與其它通訊機制,如訊號量結合使用,來達到程序間的同步及互斥。

6.套接字( socket )

套解口也是一種程序間通訊機制,與其他通訊機制不同的是,它可用於不同機器間的程序通訊

更為一般的程序間通訊機制,可用於不同機器之間的程序間通訊。起初是由unix系統的bsd分支開發出來的,但現在一般可以移植到其它類unix系統上:linux和system v的變種都支援套接字。

linux程序間通訊綜述

linux程序間通訊綜述 linux程序間通訊主要分為以下4個領域 1 訊息傳遞 管道,fifo,訊息佇列 2 同步 互斥鎖,條件變數,讀寫鎖,訊號量 3 共享記憶體區 匿名共享記憶體區,有名共享記憶體區 4 過程呼叫 solaris門,sun rpc linux程序間的資訊共享可以分為 1 基於檔...

linux 程序間通訊綜述

linux程序間通訊主要分為以下4個領域 1 訊息傳遞 管道,fifo,訊息佇列 2 同步 互斥鎖,條件變數,讀寫鎖,訊號量 3 共享記憶體區 匿名共享記憶體區,有名共享記憶體區 4 過程呼叫 solaris門,sun rpc linux程序間的資訊共享可以分為 1 基於檔案系統的共享 2 基於核心...

程序間通訊方式

謝謝作者 用於程序間通訊 ipc 的四種不同技術 共享記憶體,臨界區,管道,訊息 1.訊息傳遞 管道,fifo,posix和system v訊息佇列 2.同步 互斥鎖,條件變數,讀寫鎖,檔案和記錄鎖,posix和system v訊號燈 3.共享記憶體區 匿名共享記憶體區,有名posix共享記憶體區,...