linux程序間通訊 管道

2021-10-03 06:54:08 字數 939 閱讀 6628

在linux系統中,管道是將乙個兩個程序之間的標準輸入與標準輸出連線起來的機制,以半雙工的方式工作(將乙個程序的輸出與另乙個程序的輸入連線起來的單向通訊)。

對管道的讀寫與一般的i/o系統函式一致,但不支援某些特定的i/o操作,例如lseek()。

函式原型

int pipe(int pipefd[2])

標頭檔案引數

描述pipefd

建立的管道檔案描述符,pipefd[0]:讀端;pipefd[1]:寫端。

返回值成功:0,失敗:-1

函式原型

int pipe2(int pipefd[2], int flags)

標頭檔案引數

說明pipefd

建立的管道檔案描述符

flags

管道對應的屬性標誌

返回值成功:0,失敗:-1

flags:

0:同pipe();

o_nonblock:設定建立的兩個檔案描述符的非阻塞屬性;

o_cloexec:close on exec.

管道的資料量限制:pipe_buf,在limits.h中定義(不同的核心版本會有所不同)。

#include#include#includeint main()

char read_buff[1024] = ;

char write_buff[10240] = "hello, pipe.";

pid_t pid = fork();//建立執行緒分支

if(0 > pid)

if(0 == pid)} }

else

std::cout << "recv amount: " << nbytes << " recv data: " << read_buff << std::endl;}}

return 0;

}

Linux程序間通訊 管道

linux程序間通訊機制 1.同一主機程序間通訊機制 unix方式 有名管道fifo 無名管道pipe 訊號signal systemv方式 訊號量 訊息佇列 共享記憶體 2.網路通訊 rpc remote procedure call socket 管道管道是程序間通訊中最古老的方式,它包括無名管...

Linux程序間通訊 管道

管道 管道是一種最基本的程序間通訊機制,由pipe函式建立 include intpipe int filedes 2 呼叫pipe函式時在核心中開闢一塊緩衝區 稱為管道 用於通訊,它有乙個讀端乙個寫端,然後通過filedes引數傳出給使用者程式兩個檔案描述符,filedes 0 指向管道的讀端,f...

Linux 程序間通訊 管道

程序間通訊 a程序怎樣將 hello world 傳遞給b程序 i 利用檔案實現 需要乙個 中間人 進行傳遞 檔案 在磁碟中儲存 a先呼叫open函式開啟檔案,再用write函式寫檔案,b用read函式讀取檔案,但問題如下 1.如果a傳送了資料b進行了接收,但a的資料沒有被清空 2.如果a傳送了資料...