1. 程式人生 > >程序之間的8種通訊方式

程序之間的8種通訊方式

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

百度經驗有介紹8種 無名管道(pipe),高階管道(popen)、有名管道(nemed pipe)、訊息佇列(message queue)、訊號量(semophore)、訊號(sinal)、共享記憶體(shared memory)、套接字(socket)。

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

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

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

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

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

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


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