Linux系统编程:进程间通信 1:管道

1.进程间的互相通信的方式

进程间互相通信的方式共有7种:

(1)无名管道(同主机)

(2)有名管道(同主机)

(3)信号(同主机)

(4)消息队列(同主机)

(5)共享内存(*)(同主机)

(6) 信号量集()(同主机)

(7)socket网络通信(不同主机)

 2.无名管道 
     创建管道:pipe                 int pipe(int pipefd[2]);   
   参数:
     (1)pipefd //用来获取 管道的两端 //读端pipefd[0] 
           写端为pipefd[1],读端为pipefd[0];

   返回值:
      成功返回0,失败返回-1 && errno  
      
3.管道的特点:
   (1)管道大小 65536字节   64k 
   (2)管道操作特点 :数据读走之后,认为就没了 
     
             1.写端存在,读端也存在 
              管道如果为空,此时可以一直写,直到写满,此时写操作阻塞     
             2.写端存在,读端不存在 
             此时,写操作,会导致管道破裂,SIGPIPE //这个信号会使得程序结束
             3.写端存在,读管道 
             管道中有数据,则读取数据,最终把数据读完
             管道中没有数据,则读操作阻塞
             4写端不存在,读管道 
             管道中有数据,则读取数据,最终把数据读完
             管道中没有数据,则读操作不阻塞,立即返回 

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值