浅谈linux管道
来源:互联网 发布:网络安全法特点 编辑:程序博客网 时间:2024/06/04 01:04
管道的基本概念
管道是一种基本的IPC机制,作用在于使有血缘关系的进程之间完成数据传递。创建管道使用pipe函数,头文件是unistd.h
pipe函数的使用
#include<unistd.h>
int pipe(int filedes[2]);
返回值:成功返回0,否则返回-1。参数为包含两个整形的数组,即两个文件描述符,一个为写端,一个为读端。
管道的特点
1:管道本质为伪文件,是内核中的一个缓冲区
2:通过两个文件描述符来引用,分别对应读端和写端
3:数据从写端流入缓冲区,从读端流出缓冲区
管道的原理
管道实际为内核使用环形队列实现,借助于内核缓冲区
使用管道的四种特殊情况
1:如果所有指向管道的写端的文件描述符都关闭了,但仍有进程从读端读取数据。当管道中的数据被读完时,再次读取会读到0,即管道内数据的结尾字符。
2:如果有指向管道写端的文件描述符没有关闭,但也没有向管道中写入数据。当管道中的数据被读端读完后,再次读取会阻塞,等待写端写入数据。
3:如果所有指向管道读端的文件描述符都关闭了,但仍有进程向管道中写入数据,此时该写进程会收到SIGPIPE信号,导致异常终止。当然,也可以通过信号捕捉,防止写端进程终止。
4:如果有指向管道读端的文件描述符没有关闭,但也没有从管道中读取数据,写端一直向管道中写入数据,当管道中数据写满时,写入进程会阻塞,等读端从管道中读走数据后,继续写入。
实现代码:
阅读全文
0 0
- 浅谈Linux中的 管道
- Linux 管道浅谈
- 浅谈linux管道
- 浅谈linux系统下的进程通信之管道pipe
- 浅谈管道模型(Pipeline)
- 浅谈管道模型(Pipeline)
- 浅谈管道模型(Pipeline)
- 浅谈管道模型(Pipeline)
- 浅谈管道模型(Pipeline)
- linux 管道
- linux管道
- Linux 管道
- Linux 管道
- Linux管道
- linux管道
- linux管道
- Linux管道
- linux管道
- 眼底视网膜血管增强方法(四)Frangi滤波
- 基数排序,桶排序
- 复制转发CSDN博客快捷方法
- PHP命名空间
- 使用 laydate时间控件计算2个时间日期的天数
- 浅谈linux管道
- 51Nod 1066 Bash游戏
- Android中TextView内容过长加省略号,设置超出6个字就用省略号表示
- Javascript的事件
- error: undefined reference to '__gxx_personality_v0'
- jQuery小记(一)
- 阅读ISE 复习linux多线程开发时需使用的锁
- 实时监听输入框值变化:oninput & onpropertychange
- Android RSA 加密