unix 為實現這樣的程序間通訊 提供了多種技術。一些技術提供同一主機上的程序間通訊,其他技術可以實現主機到主機的資訊交換。另外,各種技術的速度不同,所以必須選擇最合適自己需求的技術。還必須進行協調(實施時間控制和排他控制)。例如,如果乙個應用程式產生資料,另乙個應用程式消費資料,那麼當讀完共享池時消費者必須停下來等待生產者。另一方面,如果消費者無法足夠快地讀取池,生產者必須慢下來或暫停。
表 1 總結在典型的 unix 系統上可用的程序間通訊形式。
表 1. unix 中的程序間通訊
說明範圍
用途檔案
在典型的 unix 檔案中讀寫資料。任意數量的程序都可以互操作。
本地共享大資料集
管道使用專用的檔案描述符在兩個程序之間傳輸資料。通訊只在父程序和子程序之間進行。
本地簡單的資料共享,比如生產者和消費者
命名管道
通過專用的檔案描述符在程序之間交換資料。通訊可以在同一主機上的任意兩個對等程序之間進行。
本地生產者和消費者或命令-控制,比如 mysql 和它的命令列查詢工具
訊號通過中斷通知應用程式某一情況。
本地無法在訊號中傳輸資料,所以訊號主要用於程序管理
共享記憶體
通過在同一記憶體段中讀寫資料共享資訊。
本地任何型別的協作,尤其適合需要安全性的情況
套接字完成特殊的設定過程之後,使用一般的輸入/輸出操作傳輸資料。
本地或遠端
ftp、ssh 和 apache web server 等網路服務
正如前面提到的,每種技術滿足不同的需求。假設多個程序之間的協作的複雜性大體相當,每種方法的優點和缺點如下:
程序間通訊方式
謝謝作者 用於程序間通訊 ipc 的四種不同技術 共享記憶體,臨界區,管道,訊息 1.訊息傳遞 管道,fifo,posix和system v訊息佇列 2.同步 互斥鎖,條件變數,讀寫鎖,檔案和記錄鎖,posix和system v訊號燈 3.共享記憶體區 匿名共享記憶體區,有名posix共享記憶體區,...
程序間通訊方式
遇到一考題,讓寫出程序間的通訊方式,突然給忘了,只想起管道和共享記憶體以及套接字。現在總結一下程序間的通訊方式以及他們之間的區別 1 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。2 有名管道 named pip...
程序間通訊方式
程序間通訊主要包括管道,系統ipc 包括訊息佇列,訊號量 共享儲存 socket套接字。windows系統程序間通訊 windows提供了多種機制,使得應用程式之間能夠快速 方便地共享資料和資訊。這些機制包括rpc com ole dde 訊息 剪下板 郵件槽 管道 套接字等。但是,如果在同一臺機器...