程序之間的通訊方式及適用場景

2021-09-25 17:24:06 字數 911 閱讀 4954

程序通訊是指程序之間的資訊交換,根據傳輸資料的大小,可以把程序通訊分為

在程序之間要傳遞大量資料時,應當使用高階通訊機制,高階通訊機制一般分為四大類:

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

一、共享記憶體通訊

共享記憶體是指多個程序共享一塊記憶體,是專門用來解決不同程序之間的通訊問題的,由於是直接對記憶體進行資料傳輸操作,所以是速度最快的ipc(inter-process communication)方式,因為是共享記憶體,所以需要配合訊號量機制實現同步。

二、管道通訊

無名管道( pipe ):管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。

當乙個管道建立時,它會建立兩個檔案描述符:fd[0]為讀而開啟,fd[1]為寫而開啟。如下圖:

高階管道(popen):將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子程序,這種方式我們成為高階管道方式。

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

三、訊息佇列通訊

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

四、套接字通訊

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

程序之間的通訊方式

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

程序之間的通訊方式

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

程序之間的通訊方式

程序之間的通訊方式有管道 訊息佇列 共享記憶體 訊號量和socket五種方式。管道 來看一條linux的指令 netstat tulnp grep 8080 學過linux命名的估計都懂得這條指令的含義,其中的 就是管道的意思,作用是把前一條命令的輸出作為後一條命令的輸入。在這裡就是把netstat...