更多資料:我的目錄(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...