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共享記憶體區,...