由于写入延迟,是否可以从管道读取部分数据?

问题描述 投票:0回答:0

我有这样一种情况,一个进程每 100 毫秒将 512 字节的数据写入管道,而另一个进程不断地从同一个管道读取数据。从管道中读取完整的 512 字节数据需要三个读取操作。第一次读取操作仅返回一部分数据(例如 100 字节),下一次读取返回零字节且没有任何错误设置,最后一次读取操作读取管道中剩余的数据(例如 412 字节)。

我假设写操作是原子的,因为 512 字节小于 PIPE_BUF 字节。如果是这样,读取操作是否有可能返回部分数据,特别是读取 512 字节需要三次读取,第二次读取返回零字节。

pipe posix ipc embedded-linux
© www.soinside.com 2019 - 2024. All rights reserved.