notOnlyCRUD
2019-11-28 00:00:00 发布
#tlpi# 再刷刷PIPE,很古老也很经典的IPC方式
1. 当一次写的内容超过PIPE_BUF,就会有被其他写interleaved,不再能保证原子性;对于linux来说,PIPE_BUF默认是一页;
2. 内核中的缓冲区默认64k, 可调节;
3. 应用程序不应该依赖缓冲区大小;
4. 所有写端关闭之后,读端drain掉缓冲区内容便读到EOF,以此作为读端同步信号;
5. 向一个读端关闭的PIPE写会导致EPIPE,以此作为写端同步信号.
6. PIPE一般用于数据单向流动。全双工pipe可以用socketpair. python中multiprocessing.Queue通信用的是unix domain steam socket pairs(socketpair).