15 匿名管道

2021-08-21 03:58:55 字數 566 閱讀 9965

1. 匿名管道的概念

本質:核心緩衝區

是偽檔案,不占用磁碟空間,磁碟上不存在

特點:(1) 由讀端寫端兩部分組成,對應兩個檔案描述符

(2) 資料寫端流入,讀端流出

(3) 操作管道的程序被銷毀之後,管道自動被釋放(核心自動操作),不需要手動釋放

(4) 管道預設是阻塞的,讀和寫均預設阻塞。

2. 匿名管道的原理

(1) 內部的實現方式:佇列,而且是環形佇列

特點:先進先出(一端入隊,另一端出隊,即只能從一端寫入,另一端讀出)

(2) 緩衝區大小:預設4k位元組,大小會根據實際情況做適當調整

3. 匿名管道的侷限性

(1) 由於用佇列實現,故資料只能讀取一次,不能重讀讀取

(2) 半雙工,資料傳輸的方向是單向的

單工:遙控器

半雙工:對講機

雙工:**

(3) 只適用於有血緣關係的程序(父子程序,兄弟程序,爺孫程序,叔侄程序...)

命名管道 匿名管道

有名字 則可以通過 名字 開啟相同的管道進行通訊,沒有名字 在核心中沒有明確標識 只能通過 子程序複製父程序的方式實現通訊,複製了檔案描述符 匿名管道只能用於具有親緣關係的程序間通訊。只要在建立程序之前建立管道,後邊的程序都可以實現通訊。命名管道可用於同一主機任意程序間通訊 作業系統在核心提供的一塊...

命名管道和匿名管道

我們知道程序間是可以通訊的。可以達到資料傳輸 資源共享 事件通知 程序控制等目的。程序間通訊主要包括管道 系統ipc,套接字等。管道分為三種 1 普通管道 int pipe int fds 2 返回值0表示成功,1表示失敗 fd 0 讀 fd 1 寫 子程序往管道中寫資料,寫資料時要關閉讀端 父程序...

語言 管道 建立匿名管道

本質 特點 實現方式 侷限性 匿名管道 僅適用於有血緣關係的程序通訊.本功能實現的是 ps axu grep bash 通過呼叫 ps 和 grep命令 然後分別將他們的輸出 和 輸入的檔案描述符改變.從終端改入到管道中.intmain int argc,char ar pid t pid fork...