管道通讯

一、通讯的目的:
      1.数据传输
         一个进程需要将数据发送给另外一个进程。
      2.资源共享
        多个进程之间共享同样的资源。
     3.通知事件
       一个进程需要向一个/组进程发送信息,来通知它们发生了某事件。
   4.进程控制
       有些进程希望完全控制另一个进程的执行,此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道他们的状态。
   二、linux进程间通讯(IPC  interprocess communication)由以下几个部分发展而来
      1.UNIX进程间的通讯
       2.基于System V 进程间的通讯
       3.POSIX进程间的通讯
    
       POSIX (Portable Operating System Interface)表示可移植操作系统的接口。
三 、 IPC之间的通讯方式
    1.有名管道 (FIFO)    。。。。。。。。。。。。。。。。。。。。。。主要用于事件通知
      2.无名管道(pipe) 。。。。。。。。。。。。。。。。。。。。。。。主要用于事件通知
      3.信号(Signal)  。。。。。。。。。。。。。。。。。。。。。。。。主要用于事件的通知
      4.消息队列
      5.共享内存
      6.信号量    。。。。。。。。。。。。。。。。。。。。。。。。。。。  主要用于资源共享
      7.共享内存(socket)

四、管道通信:
             一个进程在管道的尾部写入数据,另一个进程从管道的头部读出数据。管道包括有名管道无名管道
     无名管道只能用于用于父子进程之间的通讯,有名管道可以用于同一系统中的任何两个进程的通讯。

 五、管道通信的特点: 
          1、管道通讯是单向的,有固定的读端和写端
          2、数据被进程从管道读出来后,在管道中的该数据就不存在
          3、当进程去读空管道时,该进程会阻塞
         4、当进程向满管道写入数据时,该进程会阻塞
         5、管道容量为64Kb

 五、无名管道: 
            在linux系统中,无名管道一旦创建完成后,操作无名管道将相当于操作文件。无名管道的读端被视为一个文件;无名管道的写端也被认为一个文件。
                                                                       

 六、无名 管道操作:        

     1.创建一个管道
                  int pipe(int pipefd[2]  )          
                                      pipefd[0]:指向管道的读端
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值