①管道(無名管道)
(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...