管道---无名管道

作者: 连夜雨倾城 | 来源:发表于2018-12-28 00:23 被阅读0次

    无名管道的特点:     

            1:无名管道只能用于具有亲缘关系的进程之间的通信(这里理解为,二叉树中只有具有同一个根节点的子叶才能通信,亲缘关系,就是有同一个根节点的意思-------自己的理解,也不一定对)     

            2:无名管道是半双工模型,读端只能读,写端只能写,分工明确。(就像公司的财务官只能管理财务的一亩三分地,技术官则要管理技术一块,他们互相不能干涉对方的工作行为)       

            3:由于2的原因,如果真的要实现全双工模式,可以在开一个无名管道,让他读写端与2中的相反,这样基友了读端,也有了写端       

            4:1中说道的情缘关系,根节点,必须要在管道创建之前便存在的。即管道要在子进程fork创建之前便有。不然叶子节点都有了,根节点还没有。就好比,孩子都有了,却不知道老子是谁,这样是不对的,不符合大家认知的,计算机也和人类世界一样的。所以在创建fork前,管道就要已经创建好了

    无名管道创建:         

      头文件               

            1:C语言有个特性,很多函数别人帮你写好了,但你直接拿来用,他就不同意了。(你这样直接用,我不要面子的?)所以,你就必须给开发这个函数的作者一点面子,在用他写的函数时,带上头文件,告诉他:呐,我要用你的函数了(但我们逼格必须要高,只会一声就行了,没必要多次知会,我们也要面子的嘛!)               

              2:#include <unistd.h>         

        函数原型                 

            1:这也是所有语言的坏毛病啊,说中文必须按照中文的格式,说英文必须按照英文的格式,这就导致很多人学会了中文格式,却怎么也也很难学会英文的格式一样,他们不相通就算了,格式要求还多。计算机语言也是,好在我们C语言或者C++这种格式 都学得差不多了,就学个函数排比句还是比较轻松的               

            2: int pipe(int fd [2]);

              (据说这就是函数原型,暂且相信他吧,等我们之后在验证,他是不是狼外婆)       

        参数             

            1:有些人看到这个参数,就慌了,这是什么数组啊,只是要传指针?怎么办?指针不会啊!(一看就是平时在学校不好好听老师讲课的熊孩子)但好在,他今天不是我们关注的要点,就暂且放过这群熊孩子吧。               

            2:fd[0]:代表着管道的读端,我们之前说过了,无名管道是半双工,他是个一心一意的人,只干一件事,0端只读不写。同样的fd[1]:为写端,只往里面写不进行读。大家都是一夫一妻制,所以干事都很认真,找媳妇也认真,所以都认真的甘蔗自己的事,不瞎参合。       

        返回值               

            1:这是重点,就像古时候人一样,一看某个人的样子,就知道,这是个高手                 

              2:成功返回0,(与我们一贯思维,成功为1,有点相反,这就是创造函数的人的特权,xiajier设置),错误返回-1,没办法用别人的函数只能就这样了。人在屋檐下嘛!

    程序例子:

          (程序员你不拿程序说话,还说个JJ啊,所以下面请看主餐) 

    管道---无名管道

            程序很简单呢,道理可不见到(主要是懒,有没有现成的代码懒得敲那么多行)

      原理:     

                无名管道就像一个下水管道那样,但藏在地底下,我们也不知道他叫什么名字(扯远了),和下水道那样一头进,一头出。(有人问,那他为什么不两头都可以进/出,说的,有道理,可想想厕所马桶要是这样,就........再说那也不是他干的事啊,那是他双胞胎兄弟的活儿,乱抢功劳可不好。)所以无名管道,除了上面的什么半双工啊,还要记住的是,在读端写或者在写端读都是不好的,想想上面的马桶下水道即可!

    相关文章

      网友评论

        本文标题:管道---无名管道

        本文链接:https://www.haomeiwen.com/subject/tzujlqtx.html