m0_73414992 2023-09-20 10:54 采纳率: 64.3%
浏览 6
已结题

管道通信的一个我不明白的问题

img


没搞懂
多个写进程的话,如果读进程读出的数据是不需要的会怎么样?
又比如管道中有剩余数据怎么办?

img

  • 写回答

1条回答 默认 最新

  • GreefGu 2023-09-20 11:01
    关注

    第一个方案:多个写进程和一个读进程的解决方案:
    当多个写进程往同一个管道写入数据时,数据会按照写入的顺序依次进入管道。
    如果一个读进程从管道中读取数据,它会读取管道中最早写入的数据,然后从管道中删除这些数据。
    如果读进程读取的数据对其无用,它可以选择忽略这些数据,但无论如何,这些数据都会从管道中消失。
    总之,在这种情况下,如果读进程不需要某些数据,它可以选择丢弃它们,但这些数据会永久从管道中移除。
    第二个方案:多个写进程和多个读进程的解决方案:
    在Linux和类似的操作系统中,管道允许多个写进程和多个读进程同时存在。
    当多个写进程写入数据时,数据仍然按照写入的顺序进入管道。
    多个读进程可以从管道中读取数据,但数据将被共享。每个读进程读取的数据不会被其他读进程读取。
    如果管道中有剩余数据(即管道中还有未读取的数据),它们会保留在管道中等待下一个读进程来读取。
    在这种情况下,管道中的数据会被多个读进程共享,但不同读进程之间不会干扰。如果某个读进程没有兴趣或不需要某些数据,它可以选择不读取它们,但这些数据会保留在管道中,直到被另一个读进程读取或直到管道关闭。

    管道的行为取决于进程的读取和写入操作,如果某些数据不需要,进程可以选择丢弃它们。管道中的数据不会被多次读取,每个数据只会被读取一次,然后从管道中删除(或在多读进程的情况下,等待下一个读进程读取)。
    如果还有疑问可以回复我,如果觉得回答得不错,麻烦点个采纳,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月28日
  • 已采纳回答 9月20日
  • 修改了问题 9月20日
  • 创建了问题 9月20日

悬赏问题

  • ¥20 关于#vue.js#的问题:后端返回的代码如下,根据后端返回的数据在页面上重新展示
  • ¥15 visual studio 社区版离线激活失败了
  • ¥30 python密码表示
  • ¥15 Flask应用部署到阿里云服务器失败,无法访问网页,问题出在哪里?
  • ¥15 有什么好的直流步进减速电机42的厂家推荐,保持力矩达到0.3N.M
  • ¥15 一道蓝桥杯的题,请问我错在哪里
  • ¥15 关于#android问题,xposed模块找不到so
  • ¥15 UE5.4.2创建C++项目成功,但是编译失败
  • ¥15 华为手机备份nas,airdisk,遇到的空间不足问题。求个详细的解决方案。
  • ¥20 Cknife无法使用