管道 pipe是什么?(进程通信的一种方式)
生活随笔
收集整理的這篇文章主要介紹了
管道 pipe是什么?(进程通信的一种方式)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
管道是一種進程間通信機制,好比一個管子,一邊一個口,一個往里放,另一頭可以往出取,操作是雙向的
管道實際上是一種固定大小的緩沖區,管道對于管道兩端的進程而言,就是一個文件,但它不是普通的文件,它不屬于某種文件系統,而是自立門戶,單獨構成一種文件系統,并且只存在于內存中。它類似于通信中半雙工信道的進程通信機制,一個管道可以實現雙向 的數據傳輸,而同一個時刻只能最多有一個方向的傳輸,不能兩個方向同時進行。管道的容 量大小通常為內存上的一頁,它的大小并不是受磁盤容量大小的限制。當管道滿時,進程在 寫管道會被阻塞,而當管道空時,進程讀管道會被阻塞。
每個進程各自有不同的用戶地址空間,任何一個進程的全局變量在另一個進程中都看不到,所以進程之間要交換數據必須通過內核,在內核中開辟一塊緩沖區,進程A把數據從用戶空間拷到內核緩沖區,進程B再從內核緩沖區把數據讀走,內核提供的這種機制稱為進程間通信。
不同進程間的通信本質:進程之間可以看到一份公共資源;而提供這份資源的形式或者提供者不同,造成了通信方式不同,而 pipe就是提供這份公共資源的形式的一種。
參考文章1:什么是linux管道,windows下有管道類似的東西嗎?
參考文章2:管道(pipe)通信
參考文章3:進程間的通信方式——pipe(管道)
總結
以上是生活随笔為你收集整理的管道 pipe是什么?(进程通信的一种方式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建APPLEID 和申请成为开发者
- 下一篇: 你的企业如何才能留住员工?