splice (system call)

splice() is a Linux-specific system call that moves data between a file descriptor and a pipe without a round trip to user space.

The related system call vmsplice() moves or copies data between a pipe and user space.

Ideally, splice and vmsplice work by remapping pages and do not actually copy any data, which may improve I/O performance.

[1] The Linux splice implementation borrows some ideas from an original proposal by Larry McVoy in 1998.

[2] The splice system calls first appeared in Linux kernel version 2.6.17[1] and were written by Jens Axboe.