無名管道(PIPE)與 有名管道(FIFO)

2021-10-08 22:51:23 字數 1262 閱讀 1845

更多資料:我的目錄(1)無名管道的建立:

標頭檔案:					#include 

函式原型: int

pipe

(int pipefd[2]

);引數: pipefd: 乙個至少具有兩個int型資料的陣列

pipefd[

0] :讀端的檔案描述符,只能讀取管道中的資訊

pipefd[

1] :寫端的檔案描述符,只能往管道中寫入資訊

返回值: 成功:0

失敗:-

1

(2)無名管道的讀寫與關閉

read() , write() , close() 三個函式。

(3)無名管道的特點:

①只能用於具有血緣關係的父子程序或者兄弟程序通訊。

②無名管道讀寫端分開,不能混淆。

③沒有往無名管道中寫入資料時,read()會阻塞當前程序,直到有程序往管道中寫入資料,read()才解除阻塞。

(4)無名管道的具體用法例項:

無名管道pipe,進行父子雙程序的「雙向通訊」

雙程序無名管道通訊應用例項 |

|=分割線=||

(1)有名管道的建立:

標頭檔案:					#include 

#include

函式原型: int

mkfifo

(const

char

*pathname, mode_ t mode)

;引數: pathname: fifo的檔名(路徑名)

mode: 檔案許可權(0777

,0666)

返回值: 成功: 0

失敗: -

1

(2)有名管道的開啟、讀寫與關閉

open() , read() , write() , close() 四個函式。

(3)有名管道的特點:

①任意多個程序之間都能通訊,有無血緣關係都行。

②有名管道不區分讀寫端,可以任意讀寫。

③沒有往有名管道中寫入資料時,read會阻塞當前程序,直到有程序往管道中寫入資料,read才解除阻塞。

④有名管道建立成功會在指定的路徑下生成管道檔案,無名管道沒有管道檔案(不能在共享資料夾中建立有名管道)。

⑤有名管道可以保證讀寫的原子性,操作不可以被打斷。

(4)有名管道的具體用法例項:

有名管道fifo,進行雙程序的「雙向通訊」

雙程序有名管道通訊應用例項

無名管道pipe

管道是unix系統ipc的最古老形式,所有的unix系統都支援這種通訊機制。有兩個侷限性 1 支援半雙工 2 只有具有親緣關係的程序之間才能使用這種無名管道 pipe函式 功能 建立無名管道 函式原型 include int pipe int filedes 2 引數經由引數filedes返回兩個檔...

無名管道和有名管道

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

Linux 匿名管道pipe與命名管道FIFO

什麼是管道 功能 建立匿名管道 引數 fd 檔案描述符陣列,其中fd 0 表 示讀端,fd 1 表 示寫端 返回值 成功返回0,失敗返回錯誤 實現 include include include include int main memset buf,0x00,sizeof buf 從管道中讀取 i...