Linux 管道通訊的使用

2021-10-24 09:49:40 字數 1042 閱讀 1084

只能在具有親緣關係的程序式之間進行通訊。

int pipe(int pipefd[2])

#include

#include

#include

#include

intmain()

;int ret =

pipe

(pipefd);if

(ret <0)

pid_t pid =

fork()

;if(pid ==0)

else

if(pid >0)

return0;

}

支援同乙個主機中的不同進行之間進行訪問。

int mkfifo(char* name, mode_t mode)//管道名稱與許可權。

#include

#include

#include

#include

#include

//命名管道

#include

//錯誤處理

#include

//檔案操作

intmain()

int fd =

open

("./test.fifo"

,o_rdonly)

;//以唯讀的方式開啟檔案

if(fd <0)

return0;

}

注意

檔案以唯讀的方式開啟,則會被阻塞,直到檔案用寫的方式進行開啟。

檔案以只寫的方式開啟,則會被阻塞,直到檔案用讀的方式開啟。

管道自帶同步與互斥

同步:通過條件判斷實現對臨界資源訪問的時序合理性。體現在管道中為管道的讀寫特性

互斥:通過唯一訪問實現對臨界資源訪問的安全性。管道的讀寫操作在pipe_buf中保證了原子性。

Linux 管道的通訊

utili.h ifndef utili h define utili h include include include include include include include define fifo read readfifo define fifo write writefifo de...

Linux 管道通訊

一 定義 管道是單向的 先進先出的。它將乙個程式的輸入和另乙個程式的輸出連線起來。資料被乙個程序讀出後,將被從管道中刪除。分為無名和有名管道兩種。前者用於父程序和子程序間的通訊,後者用於同一系統的兩個程序間通訊。二 無名管道 int pipe int fd 2 其中,fd 0 用於讀管道,fd 1 ...

Linux管道通訊

現在在linux 中使用較多的程序間通訊方式主要有以下幾種。1 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。2 訊號 signal 訊號是在軟體層次上對中斷機制的一種模擬,它是比較複雜的通訊...