进程间通信--管道
2014-09-13 19:37
169 查看
进程间通信—管道
管道的概念
进程之间通信的一种机制,管道,顾名思义,就是一根管子,分别连接着两个进程
首先要讲明的一点是:管道是存在于内核中的,并非在用户层
Int fd[2]; //定义管道的两端,无名管道
Int pipe(fd); //用函数pipe()把fd 定义为管道
Pipe()的作用就是用来创建管道
无名管道的图示如下:
通过管道,父进程可以往管道里写数据,子进程可以从中读数据
管道的工作过程
注意:fd[0]只能从管带中读数据,而fd[1]只能从管道中写数据
工作过程如下:
Int fd[2];
Pipe(fd,flags); //用pipe函数使fd指向管道的两端
注意:当用pipe()创建一个管道时,此管道只属于该进程所拥有
就好像一个人自说自话,自己发送数据自己接收数据
所以为了能够在两个进程之间通信,使用fork() 如图所示:
注意:
1、但有一个问题,管道的每一端都有两个fd文件描述符,所以需要关闭其中一个
2、pipe()应该只用于父子进程之间的通信
相关代码如下:
Int fd[2];
Pipe(fd,flags);
Pid_t pid = Fork();
If(pid == 0)
{
Close(fd[1]);
Write();
}
Else
{
Close(fd[0]);
Read();
}
管道的概念
进程之间通信的一种机制,管道,顾名思义,就是一根管子,分别连接着两个进程
首先要讲明的一点是:管道是存在于内核中的,并非在用户层
Int fd[2]; //定义管道的两端,无名管道
Int pipe(fd); //用函数pipe()把fd 定义为管道
Pipe()的作用就是用来创建管道
无名管道的图示如下:
管道的工作过程
注意:fd[0]只能从管带中读数据,而fd[1]只能从管道中写数据
工作过程如下:
Int fd[2];
Pipe(fd,flags); //用pipe函数使fd指向管道的两端
就好像一个人自说自话,自己发送数据自己接收数据
所以为了能够在两个进程之间通信,使用fork() 如图所示:
注意:
1、但有一个问题,管道的每一端都有两个fd文件描述符,所以需要关闭其中一个
2、pipe()应该只用于父子进程之间的通信
相关代码如下:
Int fd[2];
Pipe(fd,flags);
Pid_t pid = Fork();
If(pid == 0)
{
Close(fd[1]);
Write();
}
Else
{
Close(fd[0]);
Read();
}
相关文章推荐
- 进程间通信之管道
- Linux进程间通信(1):管道
- Linux进程间通信——使用匿名管道
- Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存
- Head First C 第十章 进程间通信 创建管道
- Linux进程间通信——管道
- Linux进程间通信——使用命名管道
- Linux进程间通信之管道篇
- Linux环境进程间通信系列(一):管道及有名管道
- Linux 进程间通信 管道
- 进程间通信 ——管道
- 进程间通信---管道
- 嵌入式 Linux进程间通信(六)——管道
- 进程间通信之匿名管道
- 进程间通信 管道 (pipe,FiFO)
- 进程间通信之管道
- linux内核剖析(八)进程间通信之-管道
- 有关于 使用 命名管道 进行网络 进程间通信 的资料收集
- Linux进程间通信--命名管道
- Linux进程间通信——使用命名管道