无名管道
来源:互联网 发布:c语言中x a 3 b a 编辑:程序博客网 时间:2024/04/29 12:01
进程间通信方式:
不同软件和项目对通信方式的要求不一样。必须熟练掌握其中一到两种,剩下的4种要达到知道并能通过手册和资料进行编写。常用的有:消息队列,信号(唯一一种可以实现异步的操作)。
无名管道:
不同进程间的数据交互,每个进程4G空间是相互独立的,当操作相同的内容或对其他信号进行协同时就要用到通信,因为彼此独立。线程间不需要通信机制是因为线程之间共享4G空间。
无名管道是在内核中提供的一块共享空间,供两个进程进行读写。
管道是单双共的,同时读写数据就会出错,网络通信是双共的。
API接口:
pipe执行成功后会在内核中创建一个管道空间,并将两个文件描述符返回给进程。
注意fd[0] 固定读、
fd[1] 固定写。
文件描述符是在进程中的,如果进程间通信,需要两个进程都获取同样的文件描述符,所以这两个进程应该是亲缘关系的进程。
示例与演示分析:
创建子进程采集数据发送给父进程,子进程write,父进程read
管道中的数据是按照文件IO读取的,并不是一个消息一个消息读取的,如果写消息与读消息的数据个数不一定,有可能造成数据 的不一致;
最好写入一个读取同样个数数据,并由开发者控制读写的字节数,对于读写缓存区buf要及时清空。
标准io有缓存区,容易出错,所以有名管道通过文件IO进行操作.
管道读取出的数据和写入的数据顺序是相同的,原样读取,不可以用lseek()定位.
0 0
- 无名管道
- 无名管道
- 无名管道
- 无名管道
- 无名管道
- 无名管道
- 无名管道
- 无名管道
- 无名管道
- 无名管道
- 无名管道
- 无名管道
- 有名管道&无名管道
- 无名管道和有名管道
- 无名管道有名管道续
- 无名管道和有名管道
- 无名管道和有名管道
- 有名管道和无名管道
- Spring AOP(4)- 异常增强
- Jessica's Reading Problem POJ
- Collaborative Filtering 协同过滤小结 part-1:CF背景
- C语言(无序一组数插入有序一组数)2017.4.23
- WPF 简单原生进度条
- 无名管道
- PHP 开发者该知道的 5 个 Composer 小技巧
- 简易的学生成绩录入系统(结构,结构指针,结构数组的运用)
- 375. Guess Number Higher or Lower II
- linux 下c语言创建单向动态链表的理解
- tab选项卡切换(借鉴积累)
- Matlab常用的标记符号和颜色
- JS:类型转换string 转换成为 number
- Assign Cookies