无名管道是linux中管道通信的一种原始方法,有以下特征:

  1、单工通信模式,具有固定的读端和写端;

  2、管道可以看成是一种特殊的文件,对于它的读写可以使用普通的read(),write()等文件IO操作函数接口,但是它不属于任何文件系统,并且只存在与内存中;

  3、只能用于具有亲缘关系的进程之间的通信;

  4、通常使用时,首先创建一个管道,然后调用fork函数创建一个子进程,该子进程会继承父进程所创建的管道;

  5、只有在管道的读端存在时,向管道写入数据才有意义,否则向管道写入的数据的进程将收到内核发送过来的SIGPEPE信号;

  6、向管道写入数据时,linux不保证写入的原子性,管道缓冲区只要有空间,写进程就会试图向管道写入数据,如果管道缓冲区已满,那么写操作将会一直阻塞;

下面例子详尽阐述管道的使用方法,首先创建管道,然后父进程使用fork函数创建子进程,最后通过关闭父进程的读描述符和子进程的写描述符,建立它们之间的通信,父子进程的先后顺序通过信号量PV操作来实现;图1为详尽实现代码,图2为编译运行后结果。

©著作权归作者所有:来自51CTO博客作者wx607823dfcf6a9的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 手把手教Linux驱动9-等待队列waitq
  2. 一文读懂Linux
  3. 解析Java横死之谜,气定神闲看花开花落
  4. 将java进程转移到“解剖台”之前,法医都干了什么?
  5. 【博客大赛】一篇文章了解CI/CD管道全流程
  6. Oracle 12c新特性--LREG进程专门负责注册实例服务
  7. 杀掉所有占用cpu 99以上的进程
  8. 技术问答-21 线程 进程
  9. Linux 下使用 killall 命令终止进程

随机推荐

  1. Android小案例——简单图片浏览器
  2. 去掉android的屏幕上的title bar
  3. asdasdas
  4. android 表单布局 左右布局
  5. Android设计模式系列
  6. Android 读取和保存文件(手机内置存储器)
  7. Simple Gestures on Android
  8. Android入门学习七:基本控件学习
  9. Android 获取WIFI MAC地址的方法
  10. 2011.07.06(2)——— android apiDemos 之