“管道”那些事儿

这一篇推送,主要来说一下“管道”的那些事。我们上一篇推送,为大家简短的说了一下“管道”的概念。关于以后的几篇IPC的推送,都会举一些生动的例子来让大家更好地理解这些东西。对于这些东西的理解,无需去知道它具体是怎么用的,因为根据操作系统的不同,可能有很多种不同的用法。我们讲的这些东西,归根到底只是一系列的数据结构,而我们为了便于记忆,对其进行命名而已。因此,可以说所有的数据结构模型,都是来源于日常的生活。那些发明这些数据结构的工程师,只不过比常人多了一分对生活的细致观察,并且用代码实现而已,大家以后的工作中,也可以多留意生活现象,从而自己来写出一些优秀的算法。

(一) 管道(PIPE)

首先来分析一下管道的数据模型。前面说了,管道是一种单向的数据存储区域,每次在C语言代码中使用它时,必须先像定义变量一样,定义一个管道。假设我们用一下代码去创建:

pipe_fd = pipe_create(pStrPipeName, PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 0, 0, NMPWAIT_WAIT_FOREVER, 0);

其实,在所有的操作系统里面定义一个管道,其方法都差不多,而我们不需要去关注“(pStrPipeName, PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 0, 0, NMPWAIT_WAIT_FOREVER, 0); ” 里面的东西,因为这些东西可能会由于平台的不同而有所区别。我们只要知道的是,当一个管道创建完成之后,其返回值就是当前被创建管道的ID号,我们利用Linux的习惯,称之为“pipd_fd”(管道描述符),这个东西,就是我们以后识别某个管道的ID号,有且唯一,不可重名。而以Linux来说,管道创建失败,则会返回一个错误宏,这个东西不需要去管。

接着,来说下管道的数据写入。我们只需要使用特定的API去写你想要的管道即可,并且几乎所有操作系统的管道写入API都会提供给用户一个可以接入pipd_fd的参数,来指定管道。每次写入时候,我们可以简单地理解就是对该管道德头部插入一个指定数据类型的数据。

每次数据都会从管道的一端进行写入,而从另一端进行读出。每次读出一个数据之后,就会将所有的数据向前移位,进而来实现先进先出的数据结构。

最后说明一点,普通管道,其创建之后,必须进行回收,最终的数据结构是一种存放入“堆区”中的链表,而不是简单的一块“栈区”数组。

如果一定要举一个生活中的实际例子来描述一下管道,其结构是和过安检的传送带是一个道理。

(二) 有名管道(named PIPE或者FIFO)

有名管道的数据操作是和管道一模一样,唯一的区别就是,有名管道的“名”指的是文件名,也就是说,你一旦创建了一个有名管道之后,就会在硬盘上创建一个以此管道名为名的文件,专门用于这种数据结构的操作。

如果大家觉得我的付出可以为你带来些许的收获,请点击下方进行分享,让更多人得到这份收获。

(0)

相关推荐

  • linux管道pipe详解

    管道 管道的概念: 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递.调用pipe系统函数即可创建一个管道.有如下特质: 1. 其本质是一个伪文件(实为内核缓冲区) 2. 由两个 ...

  • Shell:管道与重定向

    转自:TOMORROW 链接:https://reurl.cc/A8vpQE 对shell有一定了解的人都知道,管道和重定向是 Linux 中非常实用的 IPC 机制. 在shell中,我们通常使用符 ...

  • linux各种通讯机制汇总

    eventfd -- 创建一个文件描述符fd,用于支持事件等待通知机制 ,  功能上类似于信号量. 使用场景:当使用pipe仅用于等待/通知功能时,可以使用eventfd替换,代价低,只需要一个文件描 ...

  • 城镇燃气规范那些事儿——燃气管道压力分级

    ★前言★ 熟悉燃气管道常识的小伙伴,应该都听说过中压.低压等一类名词,那么它们到底是如何划分的呢?各自又有什么样的特点?本期"城镇燃气规范那些事儿",小编为大家来捋一捋关于&quo ...

  • 什么是有意义的事儿,或许每天能赚10万、...

    什么是有意义的事儿,或许每天能赚10万.100万,1000万. 我是商人. 商人证明自己成功的方式太简单了. 多赚钱,多喝酒,多抽烟,多打P就行了. 自从我放弃了喝酒,抽烟,打P,很多朋友就消失了. ...

  • 机关干部穿衣那些事儿:史上最全的机关干部着装法则

    职场着装的本质不但代表一个人的精神面貌,更是他应付各种大场面的心理准备程度,着装越正式,就代表他已经准备好出现在大场面了,所以,你该怎么做呢? 公务员因其职业特点,决定了在工作场合衣着的严谨性上,比其 ...

  • 为什么别人不把你当一回事儿,句句戳心!

    为什么别人不把你当一回事儿, 因为你太好说话了. 什么事情,一找你就应: 什么东西,一要你就给: 什么错误,你都会原谅: 什么伤害,你都能接受! 要知道,有的人 习惯了得到,便忘记了感恩: 习惯了你的 ...

  • 化工管道选材那些事,很全很实用!

    影响管道材料选择的因素有很多:工艺的设计条件,材料的特性.经济性.可加工性,对最终产品的污染性,工艺安全性,抗腐蚀性等. 编辑搜图请点击输入图片描述(最多18字)化工管道常用材料的分类 编辑搜图请点击 ...

  • 这8个故事,才是玄奘取经路上的真事儿!

    2016-09-04 小朋友们,你知道吗?西游记当中的唐僧,在历史上真有其人的哟!他生活在距今约1400多年前的唐代,笃信佛教,是一名伟大的僧人,他的法号叫玄奘. 他在27岁的时候,做了一件非常勇敢的 ...

  • 大师谈 || 国医大师王琦:减肥这事儿,用中医说起来也简单

    王琦,中国工程院院士,国医大师.现任北京中医药大学终身教授.第四届中央保健委员会会诊专家,国际欧亚科学院院士. 虽然市面上广泛以瘦为美,但是有学者研究发现适当的胖也不一定是坏事.胖人在生活质量.疾病耐 ...

  • 你们要的《大语文那些事儿》来啦~(全套6册赠赵旭老师12节音频课)

    <大语文那些事儿> ▼ 知名语文老师.文化基因唤醒人赵旭 紧跟教育改革方向编写 涉及部编版教材中100+篇目 "点线面"教学法.文史哲三维一体 培养孩子语文思维和综合素 ...

  • 突然想起母亲的一个事儿,到现在还觉得好笑

    点击蓝色文字关注我们吧! 1 作者:芳菲华年 这个标题会让人误解我是标题党,可我要辩解,真不是,只是真的不知道怎么拟标题了,就这么原生态的陈述出来了. 至少是七八年前了,我忘了具体的时间了,那是母亲第 ...