man pipe -s7 文件很好地写入管道。对我来说重要的部分是,如果设置了 O_NONBLOCK 并且写入长度大于 PIPE_BUF,则写入只会部分完成。
但是,关于读取端什么也没说。
我在写入端以阻塞模式通过我的管道发送表示事件的结构。在读取结束时,我正在以非阻塞模式在更新循环中处理这些事件(和其他事情)。
由于我的结构小于 PIPE_BUF,所以 read 总是会读取整个结构吗?还是我需要处理仅读取部分结构的可能性?
常识告诉我,读取行为将反映记录在案的写入行为,但如果指定了这一点,我会更高兴。
我正在使用 Linux(内核 3.8、x86_64)。但重要的是我的代码可以跨不同的 UNIX 风格和 CPU 架构移植。
谢谢。克里斯。