The splice family of Linux system calls can transfer data between file
descriptors without the need to copy data into userspace. Instead of a
userspace buffer, they rely on an ordinary Unix pipe as a kernel-level
buffer.
- http://bogomips.org/ruby_io_splice/
- [email protected]
- git://bogomips.org/ruby_io_splice.git
Changes:
IO::Splice.copy_stream no longer modifies the actual file offset
of the given source file (if it’s a regular file). This follows
IO.copy_stream and IO#sendfile semantics, allowing multiple
threads/processes to simultaneously stream a single regular file
descriptor to multiple sockets/pipes.