程序之間的8種通訊方式

2021-07-23 14:00:23 字數 694 閱讀 9490

現在最常用的程序間通訊的方式有訊號、資訊量、訊息佇列、共享記憶體等。

程序通訊,就是不同程序之間進行一些「接觸」。

它們使用的方法基本是相同的,所以只要掌握了一種使用方法,然後記住其他的即可。

訊號和訊號量是不同的,它們雖然都可以用來同步和互斥,但是訊號是使用訊號處理器來進行的,訊號量是使用p,v操作來實現的。

訊息佇列是比較高階的一種程序間通訊方式,因為它真的是可以在程序間傳送message,傳送普通字串也可以。

乙個訊息佇列可以被多個程序所共享(ipc((inter-process communication,程序間通訊))就是在這個基礎上進行的);如果乙個程序訊息太多,乙個訊息佇列放不下,也可以用多於乙個的訊息佇列(不管管理可能會比較複雜)。共享訊息佇列的程序所傳送的訊息除了message本身外還有乙個標誌,這個標誌可以指明該訊息將由哪個程序或者哪類程序接受。每乙個共享訊息佇列的程序針對這個佇列也有自己的標誌,可以用來申明自己的身份。

共享記憶體( shared memory )

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

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

Linux程序之間的8種通訊方式

1.無名管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。2.高階管道 popen 將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子程序,這種方式我們成為高階管道方式。3.有名管道 named ...

程序之間的通訊方式

1 管道 pipe 管道可用於具有親緣關係程序間的通訊,允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊。2 命名管道 name pipe 命名管道克服了沒有名字的限制,因此,除了具有管道所擁有的功能外,它還允許無親緣關係程序間同通訊。命名管道在檔案系統中有對應的檔名。命名管道通過命令mkfif...

程序之間的通訊方式

資料傳輸 資源共享 通知事件 程序控制 是管道的意思,它的作用就是把前一條命令的輸出作為後一條命令的輸入。如果兩個程序要通訊的話,可以使用這種管道進行通訊,因為 沒有名字,所以成為匿名管道,匿名管道一般用於有父子程序關係的程序中 並且這種通訊方式是單向的,只能把第乙個命令的輸出作為第二個命令的輸入,...