日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux学习之系统编程篇:IPC 和管道的基本概念及管道的创建

發(fā)布時間:2024/9/30 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux学习之系统编程篇:IPC 和管道的基本概念及管道的创建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、IPC 概念

IPC: 進程間通信。
進程間通信的常見的 4 中方式:
(1)管道 pipe fifo :最簡單(但只能在有血緣關(guān)系下進行)。
(2)信號 signal : 屬于系統(tǒng)的,所以系統(tǒng)開銷比較小。
(3)共享映射區(qū) mmap :無視血緣關(guān)系。
(4)本地套接字 socket :穩(wěn)定。

二、管道的基本概念及創(chuàng)建

(1)管道本質(zhì):內(nèi)核緩沖區(qū) (大小默認 4k,大小會根據(jù)實際情況適當放大);偽文件,就是能進行文件 IO 操作,但不占用磁盤空間。
(2)結(jié)構(gòu):分 2 部分(對應(yīng)兩個文件描述符)
讀端:流出。
寫端:流入。
注意:操作管道的進程結(jié)束后,管道自動被釋放了,管道默認是阻塞(父寫,但是寫的慢;子讀,但是讀的塊;子不需要 sleep )。
(4)管道的實現(xiàn)原理:內(nèi)部實現(xiàn)方式是“環(huán)形隊列”(隊頭和隊尾是相對的),中間元素無法訪問因為使以先進先出的方式訪問元素。例如 1 號位置元素彈出,2 號位置自動隊頭,原 1 號位置變?yōu)殛犖?#xff0c;各元素位置不動,只是編號變化。
(5)管道的局限性:數(shù)據(jù)只能讀取一次; 半雙工模式;匿名管道即只能實現(xiàn)有血緣關(guān)系的進程間通信。
注意:通信模式分為三種,分別為單工、半雙工和雙工。
(6)創(chuàng)建匿名管道:

int fd[2]; // fd[0]:讀端 fd[1] :寫端 int ret = pipe( fd ); // 返回值:成功 0;失敗-1 if(ret == -1) {perror(“pipe error”);exit(1); } // 否則創(chuàng)建成功 printf(%d\n”,fd[0]); // 結(jié)果:3 printf(%d\n”,fd[1]); // 結(jié)果:4 ; 0-3 分別為標準輸入、標準輸出、標準錯誤 close(fd[0]); close(fd[1]);

總結(jié)

以上是生活随笔為你收集整理的Linux学习之系统编程篇:IPC 和管道的基本概念及管道的创建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。