管道通信总结_通信管道维护工作总结
管道通信总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“通信管道维护工作总结”。
(一)无名管道
1.创建管道
pipe()函数创建管道,fd[0]为读描述字,fd[1]为写描述字
2.管道写
不保证原子性,管道一有空闲缓冲区,就写入数据;
如果进程不读走管道缓冲区中数据,写操作会一直阻塞;
如果读端不存在,内核会发送SIGPIPE信号,默认动作是应用程序终止;
3.管道读
如果写端不存在,返回0;
RBYTE>PIPE:返回管道中所有数据
RBYTE
(二)FIFO
1.创建FIFO
创建FIFO失败时需要判断errno是否为EEXIST,如果为EEXIST,接下来调用open就好了。
2.打开FIFO
1)阻塞模式 读:管道已经被其他进程以写打开->成功返回;其他->阻塞 写:管道已经被其他进程以读打开->成功返回;其他->阻塞 2)非阻塞模式
读:成功返回
写:管道已经被其他进程以读打开->成功返回;其他->返回ENXIO错误
3.FIFO写
3)阻塞模式
①.WBYTE > PIPE
不保证原子性,FIFO一有空闲缓冲区,就写入数据,写完所有数据返回 ②.WBYTE
保证原子性,等到FIFO缓冲区有足够空间,写入数据
4)非阻塞模式
①.WBYTE > PIPE
不保证原子性,写满FIFO空闲缓冲区,返回
②.WBYTE
保证原子性,FIFO空闲缓冲区能够容纳WBYTE->写入数据;其他->返回EAGAIN
4.FIFO读
5)阻塞模式
FIFO中无数据或其他进程正在读->阻塞;其他->成功
6)非阻塞模式
FIFO中无数据或其他进程正在读->返回-1,errno为EAGAIN; 其他->成功
《管道通信总结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
点击下载文档
[其他工作总结]热门文章