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