热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux系统编程11.管道

管道:实现原理:内核借助环形队列机制,使用内核缓冲区实现。特质:1.伪文件2.管道中的数据只能一次读取3.数据在管道中,只能单向流动局限性:1.自己写,不能自己读2.数据不可以反复



管道:

实现原理:内核借助环形队列机制,使用内核缓冲区实现。

特质:

1.伪文件

2.管道中的数据只能一次读取

3.数据在管道中,只能单向流动

局限性:

1.自己写,不能自己读

2.数据不可以反复读

3.半双工通信

4.血缘关系进程间可用

pipe函数: 创建、并打开管道

int pipe(int fd[2])

参数:

fd[0]:读端

fd[1]:写端

返回值:

成功:0

失败:-1

管道读写行为:

读管道:

1.管道有数据,read返回实际读到的字节数。

2.管道无数据:

(1)无写端,read返回0(类似读到文件尾)

(2)有写端,read阻塞等待

写管道:

1.无读端,异常终止。(SIGPIPE导致的)

2.无读端:

(1)管道已满,阻塞等待

(2)管道未满,返回写出的字节个数

fifo管道:可以用于无血缘关系的进程间通信。

命名管道:mkfifo

无血缘关系进程间通信:

读端:open fifo O_RDONLY

写端:open fifo O_WRONLY

文件实现进程间通信:

打开的文件是内核中的一块缓冲区。多个无血缘关系的进程,可以同时访问该文件。




推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有