管道 pipe是什麼?(程序通訊的一種方式)

2021-09-30 01:50:24 字數 547 閱讀 9081

管道是一種程序間通訊機制,好比乙個管子,一邊乙個口,乙個往裡放,另一頭可以往出取,操作是雙向的

管道實際上是一種固定大小的緩衝區,管道對於管道兩端的程序而言,就是乙個檔案,但它不是普通的檔案,它不屬於某種檔案系統,而是自立門戶,單獨構成一種檔案系統,並且只存在於記憶體中。它類似於通訊中半雙工通道的程序通訊機制,乙個管道可以實現雙向 的資料傳輸,而同乙個時刻只能最多有乙個方向的傳輸,不能兩個方向同時進行。管道的容 量大小通常為記憶體上的一頁,它的大小並不是受磁碟容量大小的限制。當管道滿時,程序在 寫管道會被阻塞,而當管道空時,程序讀管道會被阻塞。

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

不同程序間的通訊本質:程序之間可以看到乙份公共資源;而提供這份資源的形式或者提供者不同,造成了通訊方式不同,而 pipe就是提供這份公共資源的形式的一種。

參考文章1:什麼是linux管道,windows下有管道類似的東西嗎?

程序通訊的例項 管道 pipe

4.7.5 程序通訊的例項 管道 pipe 1.管道pipe 程序通訊的使用例子之一是unix系統的管道通訊。unix系統從system v 開始,提供有名管道和無名管道兩種通訊方式,這裡介紹無名管道。無名管道為建立管道的程序及其子孫提供一條以位元流方式傳送訊息的通訊管道。該管道再邏輯上被看作管道檔...

程序間通訊(IPC) 管道(Pipe)

管道 乙個程序連線資料流到另乙個程式 pipe函式的原型 include int pipe int file descriptor 2 該閃身在陣列中填上兩個新的檔案描述符後返回0,如果失敗則返回 1。寫到file descriptor 1 的所有資料都可以從file descriptor 0 讀回...

程序間通訊(1) 管道pipe

學習linux的知識中,有乙個特別重要的概念叫 程序 而要進行程序間通訊時,有乙個特別重要的概念就是 管道,今天,我們就來學習一下什麼是管道,它能又幹什麼呢?一 概念 管道 把乙個程序連線到另外乙個程序的乙個資料流稱為管道。其實,我們聯絡現實生活,自來水管可以將我們使用者和供水站連線起來,通過管道運...