linux管道通信原理

管道:也是文件,可以用于有血缘关系的进程间的通信。
实现机制:
两个或多个进程之间想要通信由于他们各拥有自己的地址空间所以必须有一块公共的空间,而这块空间就需要内核为他们提供,也就是缓冲区。
管道有两端一端负责输入,一端负责输出,所以两端就分别连接两个进程。进程1负责将数据输入到缓冲区,进程2将缓冲区的数据拿出来,这样就实现了两个进程的通信。
这里写图片描述
管道被设计成为环形的数据结构,以便管道可以被循环利用。当管道中没有信息的话,从管道中读取的进程会等待,直到另一端的进程放入信息。当管道被放满信息的时候,尝试放入信息的进程会等待,直到另一端的进程取出信息。当两个进程都终结的时候,管道也自动消失。

int pipe(int fd[2]);
功能: 创建一个简单的管道,若成功则为数组fd分配两个文件描述符,其中fd[0] 用于读取管道,fd[1]用于写入管道。
返回:成功返回0,失败返回-1;

#include<stdio.h>
#include<unistd.h>
#include<errno.h>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值