进程间通信—命名管道
来源:互联网 发布:成都人工智能公司 编辑:程序博客网 时间:2024/06/04 00:28
命名管道,和匿名管道,有了自己的名字,有了名字就可以操作。所以他不在局限于有血缘关系的两个进程之间,适用于任意的两个进程。
实际上和匿名管道一样是一块内核中的缓存,和匿名管道不一样的是,他在文件系统中多了文件,而匿名管道的文件只存在与内存中,但是命名管道的文件虽然存在,有在内核数据结构中有自己的环境,但是在内核中的结点并没有存在数据块,数据的信息和缓存是同步的。
特性:
简单,在任意两个进程里想要通信的时候,只要使用操作文件的方式就可以(提前创建一个fifo文件)
读写操作:
还没有建立起来一个完整管道时,调用read会阻塞。
还没有建立起来一个完整管道时,调用write会阻塞。
建立起来后,关闭读端,写write,会有SIGPIPE信号。
建立起来后,关闭写端,读read,会返回0表示读完了。
完整的管道时,往已满的管道写会阻塞。
完整的管道时,读已空的管道时会阻塞。
创建fifo文件的函数:
int mkfifo(const char*pathname,mode_t mode);
指定路径和权限创建一个fifo文件,成功返回0,失败返回-1,并且设置erron。
使用文件的操作去使用fifo文件,实现通信。
阅读全文
0 0
- 进程间通信 —— 命名管道
- 进程间通信——命名管道
- 进程间通信——命名管道
- Windows进程间通信—命名管道
- 进程间通信—命名管道
- 进程间通信---命名管道
- 进程间通信---命名管道
- 进程间通信--命名管道
- 进程间通信----命名管道
- 进程间通信命名管道
- 进程间通信-命名管道
- 进程间通信--命名管道
- 进程间通信---命名管道
- 进程间通信-命名管道
- 进程间通信--命名管道
- 进程间通信-命名管道
- 进程通信—命名管道
- Linux进程间通信—无名管道和命名管道
- nested exception is org.hibernate.AnnotationException: Unknown mappedBy in
- 深拷贝与浅拷贝实现(参考jquery)
- XML上——JAVA读取XML文件
- palindrome-number
- C/C++ sort函数的用法
- 进程间通信—命名管道
- spark-调优-shuffle
- ActionContext 、ServletContext 和 ServletActionContext 的区别
- 错位的字符串问题
- 算法第三周 3Sum[medium]
- 《Java编程思想》前四章
- Android
- hdu1505最大子矩阵(输入超级坑)
- ARCGIS读取Excell数据生成多边形Python脚本