您的位置:首页 > 其它

进程间通信--管道

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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: