1、命名管道的特点:

(1)是管道,可用于非血缘关系的进程间的通信

(2)使用命名管道时,梁金成需要用路径表示通道。

(3)命名管道以FIFO的文件形式存储于文件系统中。(FIFO:总是按照先进先出的原则工作,第一个被写入的数据将首先从管道中读出。)

(4)命名管道是一个设备文件。(因此进程与创建FIFO的进程没有血缘关系,也可以通过访问路径进行通信。)

2、命名管道的创建:(创建命名管道的系统函数有两个:mknod和mkfifo)

头文件:(两个函数均在该头文件中)

#include<sys/types.h>

#include<sys/stat.h>

函数原型:

int mknod(const char *pathname,mode_t mode,dev_t dev);

int mkfifo(const char *pathname,mode_t mode);

返回值:(两个都一样)

调用成功,返回0;调用失败,返回-1.

mknod函数:

参数pathname为创建的命名管道的全路径名;mod为创建命名管道的模式,指明其存取权限;dev为设备值,该值取决于文件创建的种类。它只在创建设备文件时才会用到。

mkfifo函数:

参数与mknod前两个参数含义相同。

mknod是⽐较⽼的函数,⽽使⽤mkfifo函数更加简单和规范,所以建议在可能的情况下,尽量使⽤mkfifo⽽不是mknod。

3、命名管道的实现:

server读端:

client写端:

运行结果:

Linux - 进程间通信 - 命名管道的更多相关文章

  1. Linux进程间通信-命名管道

    前面我们讲了进程间通信的一种方式,匿名管道.我们知道,匿名管道只能用于父子关系的进程之间.那么没有这种关系的进程之间该如何进行数据传递呢? 1.什么是命名管道 匿名管道是在缓存中开辟的输出和输入文件流 ...

  2. Linux进程间通信之管道(pipe)、命名管道(FIFO)与信号(Signal)

    整理自网络 Unix IPC包括:管道(pipe).命名管道(FIFO)与信号(Signal) 管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道 ...

  3. Linux 进程间通信(二) 管道

    Linux 进程间通信-管道 进程是一个独立的资源分配单位,不同进程之间的资源是相互独立的,没有关联,不能在一个进程中直接访问另一个进程中的资源.但是,进程不是孤立的,不同的进程之间需要信息的交换以及 ...

  4. Linux进程间通信(一) - 管道

    管道(pipe) 普通的Linux shell都允许重定向,而重定向使用的就是管道. 例如:ps | grep vsftpd .管道是单向的.先进先出的.无结构的.固定大小的字节流,它把一个进程的标准 ...

  5. linux进程间通信-有名管道(FIFO)

    有名管道(FIFO) 命名管道也被称为FIFO文件,是一种特殊的文件.由于linux所有的事物都可以被视为文件,所以对命名管道的使用也就变得与文件操作非常统一. (1)创建命名管道 用如下两个函数中的 ...

  6. Linux - 进程间通信 - 匿名管道

    一.概念:进程间通信( IPC,InterProcess Communication) 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进城之间要交换数据必须通过内 ...

  7. Windows进程间通信--命名管道

    1 相关概述 命名管道(Named Pipes)是一种简单的进程间通信(IPC)机制.命名管道可以在同一台计算机的不同进程之间,或者跨越一个网络的不同计算机的不同进程之间的可靠的双向或单向的数据通信. ...

  8. Linux 进程间通信之管道(pipe),(fifo)

     无名管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信: 定义函数: int pipe(int f ...

  9. Windows进程间通信—命名管道

    命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节.我们在不了解网络协议的情况下,也可以利用命名管道来实现进程间的通信.与Socket网络通信相比,命名管道不再需要编写身份验证的代码.将 ...

随机推荐

  1. 在.NET项目中使用PostSharp,使用CacheManager实现多种缓存框架的处理

    在前面几篇随笔中,介绍了PostSharp的使用,以及整合MemoryCache,<在.NET项目中使用PostSharp,实现AOP面向切面编程处理>.<在.NET项目中使用Pos ...

  2. 超出父视图无法点击问题hitTest

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0.0px 0. ...

  3. 关于VS2013的编码的UI测试。

    1.  打开VS2013,选择文件→新建→项目 2.  弹出的选项左侧选择visual C#中的测试,中间选择框选择编码的UI测试项目,确定后就产生的测试项目. 3.  弹出框选择默认的录制操作巴拉巴 ...

  4. Android Fragment 开发(一)

    最近在学习Fragment 的使用,想弄一个在子窗体中调用父的方法,一直报错,终于找到解决方法啦 父窗体名称:MainActivity 父中有一个public的方法show() 子窗体调用: Main ...

  5. Android OkHttp使用与分析

    安卓开发领域,很多重要的问题都有了很好的开源解决方案,例如网络请求 OkHttp + Retrofit 简直就是不二之选."我们不重复造轮子不表示我们不需要知道轮子该怎么造及如何更好的造!& ...

  6. HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析

    HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求.不作修改,客户程序就无法重复此请求. HTTP 错误 401 401.1 未授权:登录失败 此错误表明传输给服务器的证 ...

  7. Android开发遇到短信备份失败

    今天做了一个有关ContentProvider的短信备份的小案例,遇到短信备份失败,费了一番周折后终于找到了问题所在 该案例是将短信写到一个xml文件然后保存在手机存储中实现短信的备份功能,关键实现代 ...

  8. 功能总结之MongDB初探

    题外话 工作3年,了解的技术颇多,但都是一知半解,了解不是很透澈.用过的技术,就像猴子搬过的包谷,搬一个丢一个.几年风雨,真有点一缕清风过,片叶不沾身的味道. 为强化知识点,提升文档及学习能力,我把以 ...

  9. centos7 安装kubernetes1.4

    192.168.251.9 master192.168.251.231 node 建议可以搭建etcd集群来做数据库存储,并搭建kube-dns,然后把k8s的日志落地到/var/log/kubern ...

  10. mysql技术内幕InnoDB存储引擎-阅读笔记

    mysql技术内幕InnoDB存储引擎这本书断断续续看了近10天左右,应该说作者有比较丰富的开发水平,在源码级别上分析的比较透彻.如果结合高可用mysql和高性能mysql来看或许效果会更好,可惜书太 ...