mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
bpo-41625: Expose the splice() system call in the os module (GH-21947)
This commit is contained in:
parent
cce3f0b0c8
commit
a57b3d30f6
10 changed files with 349 additions and 78 deletions
|
@ -1419,6 +1419,38 @@ or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windo
|
|||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: splice(src, dst, count, offset_src=None, offset_dst=None)
|
||||
|
||||
Transfer *count* bytes from file descriptor *src*, starting from offset
|
||||
*offset_src*, to file descriptor *dst*, starting from offset *offset_dst*.
|
||||
At least one of the file descriptors must refer to a pipe. If *offset_src*
|
||||
is None, then *src* is read from the current position; respectively for
|
||||
*offset_dst*. The offset associated to the file descriptor that refers to a
|
||||
pipe must be ``None``. The files pointed by *src* and *dst* must reside in
|
||||
the same filesystem, otherwise an :exc:`OSError` is raised with
|
||||
:attr:`~OSError.errno` set to :data:`errno.EXDEV`.
|
||||
|
||||
This copy is done without the additional cost of transferring data
|
||||
from the kernel to user space and then back into the kernel. Additionally,
|
||||
some filesystems could implement extra optimizations. The copy is done as if
|
||||
both files are opened as binary.
|
||||
|
||||
Upon successful completion, returns the number of bytes spliced to or from
|
||||
the pipe. A return value of 0 means end of input. If *src* refers to a
|
||||
pipe, then this means that there was no data to transfer, and it would not
|
||||
make sense to block because there are no writers connected to the write end
|
||||
of the pipe.
|
||||
|
||||
.. availability:: Linux kernel >= 2.6.17 or glibc >= 2.5
|
||||
|
||||
.. versionadded:: 3.10
|
||||
|
||||
|
||||
.. data:: SPLICE_F_MOVE
|
||||
SPLICE_F_NONBLOCK
|
||||
SPLICE_F_MORE
|
||||
|
||||
|
||||
.. function:: readv(fd, buffers)
|
||||
|
||||
Read from a file descriptor *fd* into a number of mutable :term:`bytes-like
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue