写入SOCK_SEQPACKETprimefaces?

我的意思是primefaces是成功或失败,什么都不做。

我知道socketpair(AF_LOCAL, SOCK_STREAM)不是primefaces的,如果多个进程/线程调用write(fd, buf, len)write()的返回值可能> 0 && < len并导致数据乱序。

如果多个进程/线程write(buf, len)socketpair(AF_LOCAL, SOCK_SEQPACKET)创build的socketpair(AF_LOCAL, SOCK_SEQPACKET) write(buf, len)是否是primefaces的?

我检查了Linux手册,发现了一些关于pipe()说法,如果len小于PIPE_BUFwrite/writev是primefaces的。

我没有发现任何关于socketpair 。 我写了一个testing代码,发现似乎SOCK_SEQPACKET是primefaces的,我给fd写了随机长度的缓冲区,返回值总是-1len

是。

任何基于数据报的接口都必须是原子的(也就是说,传递的大小对read者是可见的)。 没有其他办法来保证财产。

所以SOCK_SEQPACKET以及SOCK_DGRAM必须是原子的才能起作用。

基于同样的原因, SOCK_STREAM没有这样的原子保证。