gpt4 book ai didi

unix - FIFO 是否保留消息边界?

转载 作者:行者123 更新时间:2023-12-01 03:43:43 24 4
gpt4 key购买 nike

我们知道 TCP 不会保留消息边界,但 UDP 会。但是管道和 FIFO 是什么情况呢?例如,
假设我们在同一主机上有一个服务器和两个客户端,服务器使用众所周知的路径名创建一个 FIFO,并打开这个 FIFO 进行读取。客户端 1 和客户端 2 都打开此 FIFO 进行写入。并发生以下事件:

  • 客户端 1 将 100 个字节写入 FIFO。
  • 客户端 2 将 100 个字节写入 FIFO。
  • 服务器使用足够大的缓冲区读取此 FIFO,例如:
    char buf[1024];
    read(fifofd, buf, sizeof(buf));

  • 我的问题是:
    第 3 步将返回多少数据?它是否只返回客户端 1 发送的前 100 个字节,所以我们不必担心消息边界?或者它是否返回所有 200 个字节,所以我们必须将来自客户端 1 的消息和来自客户端 2 的消息分开?

    最佳答案

    您将获得所有数据(200 字节),然后是客户端 1 的数据,然后是客户端 2 的数据。

    没有消息的概念,只是读写字节。

    关于unix - FIFO 是否保留消息边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28924135/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com