¿Es la llamada al sistema splice atómica si solo se copian PIPE_BUF bytes?
Sé que escribir menos de o igual a PIPE_BUF
bytes a una tubería es atómico.
Sin embargo, no hay ningún documento que diga si usar splice
tiene el mismo comportamiento.
Me pregunto si se garantiza que cualquier escritura en la tubería (incluyendo splice
, sendfile
, tee
) es atómica cuando la longitud no es mayor que PIPE_BUF
.
davy.ai
Comportamiento de tuberías y empalmes de Linux
Según la documentación de Linux, escribir menos o igual a
PIPE_BUF
bytes en una tubería está garantizado que será atómico. Sin embargo, no se documenta si el mismo comportamiento se aplica a las llamadas de funciónsplice
.No está claro si las llamadas de funciones
splice
,sendfile
ytee
garantizan la atomicidad al escribir en una tubería. Por lo tanto, se recomienda limitar las escrituras en la tubería aPIPE_BUF
bytes para garantizar la atomicidad.Es posible que se requiera una investigación y pruebas adicionales para determinar si las operaciones de
splice
no bloqueantes proporcionan garantías de atomicidad al escribir en tuberías con una longitud igual o inferior aPIPE_BUF
.