無名管道和有名管道區別

2021-07-23 16:34:13 字數 1060 閱讀 6438

①管道(無名管道)

(1)管道通訊的原理:核心維護的一塊記憶體,有讀端和寫端(管道是單向通訊的)

(2)管道通訊的方法:父程序建立管理後fork子程序,子程序繼承父程序的管道fd

(3)管道通訊的限制:只能在父子程序間通訊、半雙工

(4)管道通訊的函式:pipe、write、read、close

②有名管道(fifo)

(1)有名管道的原理:實質也是核心維護的一塊記憶體,表現形式為乙個有名字的檔案

(2)有名管道的使用方法:固定乙個檔名,2個程序分別使用mkfifo建立fifo檔案,然後分別open開啟獲取到fd,然後乙個讀乙個寫

(3)管道通訊限制:半雙工(注意不限父子程序,任意2個程序都可)

(4)管道通訊的函式:mkfifo、open、write、read、close

一、無名管道

pipe的函式原型:int pipe(int pipefd[2]);

功能:經由引數pipefd返回兩個檔案描述符  ( pipefd[2] 有兩個檔案描述符組成: pipefd[0]和pipefd[1] )

pipefd[0] 用於從管道讀資料, pipefd[1] 用於往管道寫資料

返回值:管道建立成功返回0,失敗返回-1;

下面是例子:子程序往管道寫資料,父程序從管道讀取該資料

二、有名管道

下面是例子,實現乙個程序建立有名管道,然後開打,接著是一直迴圈讀取管道中的內容; 另乙個程序往該有名管道中寫入資料。

①讀管道example:

②寫管道example

無名管道和有名管道

無名管道 無名管道建立 int pipe int filedis 2 當乙個管道建立時,它會建立兩個檔案描述符 filedis 0 用於讀管道,filedis 1 用於寫管道 管道用於不同程序間通訊。通常先建立乙個管道,再通過fork函式建立乙個子程序,該子程序會繼承父程序所建立的管道 有名管道 有...

管道 無名管道 和FIFO 有名管道

管道是最初的unixipc形式,但是因為管道沒有名字,所以它們只能用於有親緣關係的程序使用 進而有名管道 fifo 應運而生,有名管道有乙個路徑名與之關聯,所以允許無親緣關係的程序訪問同乙個fifo。以下具體介紹管道 管道的建立 管道由函式 int pipe int fd 2 建立,提供乙個單向資料...

管道通訊的特點及有名管道和無名管道的區別

管道通訊的特點 1.管道通訊是單向的,有固定的讀端和寫端。2.資料被程序從管道讀出後,在管道中該資料就不存在了 3.當程序去讀取空管道的時候,程序會阻塞 4.當管道往滿管道寫資料時,程序會阻塞 5.管道的容量是64kb define pipe buffers 16 include linux pip...