程序間通訊

2021-09-30 12:27:19 字數 1087 閱讀 6813

程序間的通訊目的:資料傳輸、資料共享、資源共享、通知事件、程序控制

程序間的通訊有以下方式

又可以劃分為:

同主機程序間資料交換機制:無名管道、有名管道、訊息佇列、共享記憶體

同主機程序間同步交換機制:訊號量

同主機程序間非同步交換機制:訊號

不主機程序間資料交換機制:socket

同步通訊:一種位元通訊技術,是傳送方與接收方具有同頻同相的同步時鐘訊號,傳送報文前附加特定的同步字元,使傳送雙方建立同步,便可在同步時鐘控制下逐位進行傳送/接收。

非同步通訊:傳送字元的方式,即位元組。所傳送字元之間的間隙是任意的,接收方只需做好接收準備,傳送方在傳送資料前會在每個資料的開始和結束分別加上標誌位,稱為起始位和停止位,以便接收方能準確接收資料。

非同步通訊方式裝置要求簡單、便宜,但通訊效率低,因為起始位和停止位的儲存開銷。

程序間的通訊方式有以下幾種:

1、管道:又稱無名管道。是一種半雙工的通訊方式,資料只能在具有父子親緣關係的程序間單向流動,在通訊雙方退出後自動消失。

2、有名管道:有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。

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

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

5、訊號 : 訊號是一種比較複雜的通訊方式,用於通知接收程序某個事件已經發生。

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

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

php程序間通訊 yoc PHP程序間通訊

php是用c編寫的,因此它對系統底層api的操作與c很像,同大多數語言一樣,php程序間通訊的方式有以下幾種 訊息佇列,管道,共享記憶體,socket和訊號。本文是對這幾種通訊方式對整理 管道通訊pipe 管道用於承載簡稱之間的通訊資料。為了方便理解,可以將管道比作檔案,程序a將資料寫到管道p中,然...

程序間通訊

實現程序間資料共享除了常用的記憶體檔案對映外,對於一些非檔案的資料共享可以直接使用wm copydata。如果需要在程序a傳遞資料到程序b,簡單的實現如下 在程序a中 cstring strdatatosend t hello 需要傳遞的資料 hwnd hwndreceived 程序b的接收資料視窗...

程序間通訊

最近做專案遇到奇怪的問題,我在主線程中建立乙個工作執行緒。在工作執行緒中用sendmessage向主線程傳送訊息,通知主線程操作office 物件。getactiveobject時提示 hr 0x8001010d 因為應用程式正在傳送乙個輸入同步呼叫,所以無法執行傳出的呼叫。我把sendmessag...