Linux学习之系统编程篇:IPC 和管道的基本概念及管道的创建
生活随笔
收集整理的這篇文章主要介紹了
Linux学习之系统编程篇:IPC 和管道的基本概念及管道的创建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、IPC 概念
IPC: 進程間通信。
進程間通信的常見的 4 中方式:
(1)管道 pipe fifo :最簡單(但只能在有血緣關系下進行)。
(2)信號 signal : 屬于系統的,所以系統開銷比較小。
(3)共享映射區 mmap :無視血緣關系。
(4)本地套接字 socket :穩定。
二、管道的基本概念及創建
(1)管道本質:內核緩沖區 (大小默認 4k,大小會根據實際情況適當放大);偽文件,就是能進行文件 IO 操作,但不占用磁盤空間。
(2)結構:分 2 部分(對應兩個文件描述符)
讀端:流出。
寫端:流入。
注意:操作管道的進程結束后,管道自動被釋放了,管道默認是阻塞(父寫,但是寫的慢;子讀,但是讀的塊;子不需要 sleep )。
(4)管道的實現原理:內部實現方式是“環形隊列”(隊頭和隊尾是相對的),中間元素無法訪問因為使以先進先出的方式訪問元素。例如 1 號位置元素彈出,2 號位置自動隊頭,原 1 號位置變為隊尾,各元素位置不動,只是編號變化。
(5)管道的局限性:數據只能讀取一次; 半雙工模式;匿名管道即只能實現有血緣關系的進程間通信。
注意:通信模式分為三種,分別為單工、半雙工和雙工。
(6)創建匿名管道:
總結
以上是生活随笔為你收集整理的Linux学习之系统编程篇:IPC 和管道的基本概念及管道的创建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux学习之系统编程篇:进程回收(w
- 下一篇: Linux学习之系统编程篇:利用管道进行