详解IPC中的管道和共享内存

管道

分类:命名管道和匿名管道

  • 命名管道:可以用于本机上的任意进程间通信
  • 匿名管道:只适用于拥有亲缘关系的进程间通信

本质:是内核中开辟的一块缓冲区

特性:

  • 读写特性:当一个进程读或者写时,其他进程不能读或者写
  • 自带同步与互斥
  • 半双工通信:数据只能向一段发送数据,若要双方通信,则要使用两个管道
  • 提供字节流服务
  • 生命周期随进程

匿名管道

原型

int pipe(int fd[2]);

fd:文件描述符数组,其中fd[0]表示读端,fd[1]表示写端

成功返回0,失败返回错误代码

//从键盘读取数据,写入管道,读取管道,写到屏幕
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main( void )
{
    int fds[2];
    char buf[100];
    int len;
    if ( pipe(fds) == -1 )
        perror("make pipe"),exit(1);
    // read from stdin
    w
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值