Linux 程序間通訊之匿名管道

2021-10-02 03:56:30 字數 1810 閱讀 9679

程序間通訊

目的:分類:

管道:把乙個程序連線到另乙個程序的乙個資料流稱為管道

匿名管道

#include

//建立乙個無名管道

intpipe

(int pipefd[2]

);//pipefd:檔案描述附陣列;pipefd[0]表示讀端,pipefd[1]表示寫端

//成功返回0;失敗返回錯誤**

呼叫pipe函式的程序(使用者):

pipefd[1] —w---> 管道(核心) —r---> pipefd[0]

#include

#include

#include

#include

#include

using

namespace std;

intmain()

//讀取鍵盤輸入寫入buffer

while

(fgets

(buffer,

sizeof

(buffer)

,stdin))

//把buffer內容置空

memset

(buffer,

0x00

,sizeof

(buffer));

//從管道讀的內容寫入bufferif(

(len =

read

(pipefds[0]

, buffer,

sizeof

(buffer)))

==-1)

//將buffer內容寫入顯示器if(

write(1

, buffer, len)

!= len)

}return0;

}

用fork來共享管道原理

fork之後各自關掉不用的描述附,即關掉父程序fd[1]和子程序fd[0]

檔案描述附角度理解管道

核心角度理解管道

}管道讀寫規則管道的特點

Linux程序間通訊 匿名管道

關於程序間通訊 ipc 每個程序 各自有不同的使用者位址空間 任何乙個程序的全域性變數在另乙個程序中都看不到所以程序之間要交換資料必須通過核心,在核心中開闢一塊緩衝區,程序1把資料從使用者空間拷到核心緩衝區,程序2再從核心緩衝區把資料讀走,核心提供的這種機制稱為程序間通訊 ipc,interproc...

Linux程序間通訊(匿名管道)

管道 管道是linux中很重要的一種通訊方式,是通過把乙個程式的輸出直接連在另乙個程式的輸入實現通訊的,常說的管道是指匿名管道,它與有名管道之間的最大區別就是只能用於父子程序之間。管道是一種最基本的ipc機制,由pipe函式建立 include int pipe int fileds 2 呼叫pip...

Linux程序間通訊 匿名管道

關於程序間通訊 ipc 每個程序 各自有不同的使用者位址空間 任何乙個程序的全域性變數在另乙個程序中都看不到所以程序之間要交換資料必須通過核心,在核心中開闢一塊緩衝區,程序1把資料從使用者空間拷到核心緩衝區,程序2再從核心緩衝區把資料讀走,核心提供的這種機制稱為程序間通訊 ipc,interproc...