进程通信之管道通信

#管道通信

Pasted image 20260622201729.png

  • 数据流向只能是单向的
  • #管道

  • 是一种特殊的共享文件,又名“pipe文件”
  • 其实就是在内存中开辟一个大小固定的内存缓冲区
  • ==符合队列的先进先出的特色FIFO==
  • 更像是循环队列
  • #管道特色

  • 1.管道只能采用半双工通信
  • 2.如果要实现双向同时通信(全双工通信),则需要设置两个管道
  • 3.各进程要互斥地访问管道(由操作系统实现)
  • 4.当管道写满时,写进程堵塞,直到读进程将管道中的数据取走,即可唤醒写进程
  • 5.当管道读空时,读进程阻塞,直到写进程往管道中写入数据,即可唤醒读进程
  • 6.管道中的数据一旦被读出,就会彻底消失。因此,当多个进程读同一个管道时,可能会错乱。对此通常有两个解决方案:(1)一个管道允许多个写进程,一个读进程。(2)允许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据。