{
  "slug": "splice",
  "term": "splice",
  "aliases": [],
  "definition": "splice is a Linux system call that transfers data between file descriptors, at least one of which is a pipe, without a round trip through userspace.",
  "note": "Pipe buffers can hold references to pages rather than independent byte copies. A retained page reference protects lifetime, not immutability. SPLICE_F_MOVE is documented as a no-op, not an exclusive-ownership guarantee. [splice]\n\nThe kernel also provides a copying read path, so use of splice alone does not establish that no payload copy occurred. [copy-path]",
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "related": [
    "sendfile",
    "page-cache",
    "copy-file-range"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "splice",
      "title": "Linux man-pages 6.19: splice(2), pipe buffers and flags",
      "url": "https://man7.org/linux/man-pages/man2/splice.2.html",
      "accessed": "2026-10-17"
    },
    {
      "id": "copy-path",
      "title": "Linux 6.12 documentation: splice and pipes, copy_splice_read",
      "url": "https://docs.kernel.org/6.12/filesystems/splice.html",
      "accessed": "2026-10-17"
    },
    {
      "id": "hesela-lifetime",
      "title": "Hesela: Zero-copy transfers do not freeze source bytes",
      "url": "https://hesela.com/analyses/zero-copy-source-lifetime/",
      "accessed": "2026-10-18"
    }
  ],
  "updated": "2026-10-18"
}
