通信管网工程
乐鱼体育直播:管道(无名管道)通信机制原理和实现详解
  发表时间:2022-07-04 | 来源:乐鱼体育直播下载 作者:乐鱼体育app靠谱 

  普通管道允许两个进程按标准的生产者-消费者方式进行通信:生产者向管道的一端(写入端)写,消费者从管道的另一端(读出端)读。

  因此,普通管道是单向的,只允许单向通信。如果需要双向通信,那么就要采用两个管道,而每个管道向不同方向发送数据。

  下面我们讨论在 UNIX 和 Windows 系统上创建普通管道。在这两个程序实例中,一个进程向管道中写入消息 Greetings,而另一个进程从管道中读取此消息。

  普通管道只能由创建进程所访问。通常情况下,父进程创建一个管道,并使用它来与其子进程进行通信(该子进程由 fork() 来创建)。正如《进程的创建》一节所讲的那样,子进程继承了父进程的打开文件。由于管道是一种特殊类型的文件,因此子进程也继承了父进程的管道。

  对于这个实例,父进程向管道写,而子进程从管道读。重要的是要注意,父进程和子进程开始就关闭了管道的未使用端。有一个重要的步骤是确保当管道的写入者关闭了管道写入端时,从管道读取的进程能检测到 end-of-file(调用 read() 返回 0),不过上边所示的程序中没有这个操作。

  对于 Windows 系统,普通管道被称为匿名管道(anonymous pipe),它们的行为类似于 UNIX 的管道:它们是单向的,通信进程之间具有父子关系。

  请注意,对于 UNIX 和 Windows 系统,采用普通管道的进程通信需要有父子关系。这 意味着,这些管道只可用于同一机器的进程间通信。

  关注公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。本公众号由站长亲自运营,长期更新,坚持原创,专注于分享创业故事+学习历程+工作记录+生活日常+编程资料。

  精美而实用的网站,分享优质编程教程,帮助有志青年。千锤百炼,只为大作;精益求精,处处斟酌;这种教程,看一眼就倾心。

Copyright (C) 2019  乐鱼体育直播下载-乐鱼体育app靠谱  乐鱼体育直播下载-乐鱼体育app靠谱   All rights reserved   版权所有
联系地址:长沙市芙蓉区马王堆中路蔚蓝天空大厦九楼    电话:0731-8235888  传真:0731-82610000

湘ICP备13006809号