1.管道的建立:
管道是由呼叫pipe函式來建立
#include
int pipe (int fd[2]); //返回:成功返回0,出錯返回-1
是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係(父子程序)的程序間使用。
2.有名管道和無名管道的區別:
有名管道:可以在任意兩個程序之間,有名的名字存在磁碟中
無名管道:只可以在父子程序之間
3.管道的核心實現方式:
在 linux 中,管道的實現並沒有使用專門的資料結構,而是借助了檔案系統的file結構和vfs的索引節點inode。通過將兩個 file 結構指向同乙個臨時的 vfs 索引節點,而這個 vfs 索引節點又指向乙個物理頁面而實現的。
程序間通訊方式 管道通訊
c語言中的管道通訊是通過在核心中開闢一塊空間,使用者通過檔案io介面來訪問這塊空空間實現通訊目的。管道的優點是直接訪問記憶體,通訊速度較快。缺點是一方面管道屬於半雙工的通訊,即同一程序只能讀或者寫,無法同時讀寫同一管道。另一方面管道中的資料只能讀一次,無法重複讀取。程序通過檔案io來操作管道,但是不...
程序間通訊方式介紹 管道
1.程序間通訊的方式 1 管道 一種兩個程序間進行單向通訊的機制,半雙工的通訊方式。資料只能單方向流動,而且只能在具有親緣關係 父子程序 兄弟程序 的程序間使用。從通訊的雙方資訊互動的方式分三種基本模式 單工通訊 單向通訊 只有乙個方向的通訊而沒有反方向的互動 資訊流是單方向的 傳送端和接收端的身份...
程序間的通訊方式之管道通訊
一 管道通訊的特點 1.管道是單向的,先進先出的。2.乙個程序在管道尾部寫入資料,另乙個程序在管道頭部讀取資料。因此管道通訊是半雙工的。3.管道提供了簡單的流控制機制,當程序試圖讀空管道時,程序將阻塞。當管道已經寫滿時,程序再試圖向管道寫入資料,程序將阻塞。4.資料被程序讀出,將從管道中刪除 二 管...