进程间通信系列(4)匿名管道的读写特性
来源:互联网 发布:pix飞控调参软件下载 编辑:程序博客网 时间:2024/04/30 23:31
1.通过打开两个管道来实现双向的管道;
2.管道是阻塞性质的,当进程从管道中读取数据,若没有数据,进程会阻塞;
3.当一个进程向管道中不断写入数据但是没有进程读取数据,此时若管道没有满是可以的,但是若管道满,则会报
错;
4.不完整管道:
1)当读一个写端已被关闭的管道时,在所有数据被读取后,read返回0,以表示到达管道尾部;2)如果写一个读端已被关闭的管道,则产生SIGPIPE信号,如果忽略该信号或捕获该信号并从处理程序返回,则 write返回-1,同时error设置为EPIPE。
不完整管道示例1:读一个写端被关闭的管道
#include <unistd.h>#include <stlib.h>#include <stdio.h>#include <string.h>/* *不完整管道:读取一个写端已经关闭的管道 */int main(int argc, char const *argv[]){int fd[2];if(pipe(fd) < 0){perror("pipe error");exit(1);}pid_t pid;if((pid = fork()) < 0){perror("fork error");exit(1);}else if(pid > 0)//parent process{//父进程负责从不完整管道(写端关闭)读取数据sleep(5);//等待子进程将管道的写端关闭close(fd[1]);while(1){char c;if(read(fd[0], &c, 1) == 0){printf("\nwrite-end of pipe closed\n");break;}else{printf("%c\n", c);}}close(fd[0]);wait(0);}else//child preocess{//子进程负责将数据写入管道close(fd[0]);char *s = "123";write(fd[1], s, sizeof(s));//写入数据后关闭管道写端close(fd[1]);}exit(0);}
0 0
- 进程间通信系列(4)匿名管道的读写特性
- Linux进程间通信::读写特性和匿名管道的应用(协同进程实例)
- 进程间通信系列(3)匿名管道范例代码
- 进程通信系列-匿名管道
- 进程间通信系列(一)管道读写实例
- 进程间通信系列(一)管道读写实例
- 进程间通信系列(一)管道读写实例
- 进程间通信系列(2)管道分类与读写
- 匿名管道--进程间的通信
- 进程间通信之管道通信(匿名管道)
- 进程间通信系列(7)匿名管道和命名管道异同
- 进程间通信(1):匿名管道
- 进程间通信-匿名管道
- 进程间通信 - 匿名管道
- 进程间通信匿名管道
- 进程间通信-匿名管道
- 进程间通信(剪切板、匿名管道、命名管道、邮槽)
- 进程间通信(1)---匿名管道与命名管道
- 软考——系统架构设计师工作日志
- 用st-link v2烧写程序的4中方法
- 图像压缩编码
- genymotion模拟器连不上Hbuilder解决办法
- https 单向认证和双向认证及tomcat配置及各种证书类型之间的转换,适用ios,Android,网页端
- 进程间通信系列(4)匿名管道的读写特性
- 2016最新Java学习计划
- Android studio中Kotlin配置和使用的图文详解
- C# Dictionary 字典
- 趣味理解并查集算法
- SQL的数据查询(一)
- 知识内化与外化
- Distributed Computing: Application Design in Hadoop
- 程序猿的24个段子,超级实用和搞笑哦!!!