<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="API documentation for the Rust `sendfile` fn in crate `nix`."><metaname="keywords"content="rust, rustlang, rust-lang, sendfile"><title>nix::sys::sendfile::sendfile - Rust</title><linkrel="stylesheet"type="text/css"href="../../../normalize.css"><linkrel="stylesheet"type="text/css"href="../../../rustdoc.css"id="mainThemeStyle"><linkrel="stylesheet"type="text/css"href="../../../dark.css"><linkrel="stylesheet"type="text/css"href="../../../light.css"id="themeStyle"><scriptsrc="../../../storage.js"></script><noscript><linkrel="stylesheet"href="../../../noscript.css"></noscript><linkrel="shortcut icon"href="../../../favicon.ico"><styletype="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><bodyclass="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="sidebar"><divclass="sidebar-menu">☰</div><ahref='../../../nix/index.html'><divclass='logo-container'><imgsrc='../../../rust-logo.png'alt='logo'></div></a><divclass="sidebar-elems"><pclass='location'><ahref='../../index.html'>nix</a>::<wbr><ahref='../index.html'>sys</a>::<wbr><ahref='index.html'>sendfile</a></p><script>window.sidebarCurrent={name:'sendfile',ty:'fn',relpath:''};</script><scriptdefersrc="sidebar-items.js"></script></div></nav><divclass="theme-picker"><buttonid="theme-picker"aria-label="Pick another theme!"><imgsrc="../../../brush.svg"width="18"alt="Pick another theme!"></button><divid="theme-choices"></div></div><scriptsrc="../../../theme.js"></script><navclass="sub"><formclass="search-form js-only"><divclass="search-container"><div><selectid="crate-search"><optionvalue="All crates">All crates</option></select><inputclass="search-input"name="search"autocomplete="off"spellcheck="false"placeholder="Click or press ‘S’ to search, ‘?’ for more options…"type="search"></div><aid="settings-menu"href="../../../settings.html"><imgsrc="../../../wheel.svg"width="18"alt="Change settings"></a></div></form></nav><sectionid="main"class="content"><h1class='fqn'><spanclass='out-of-band'><spanid='render-detail'><aid="toggle-all-docs"href="javascript:void(0)"title="collapse all docs">[<spanclass='inner'>−</span>]</a></span><aclass='srclink'href='../../../src/nix/sys/sendfile.rs.html#178-198'title='goto source code'>[src]</a></span><spanclass='in-band'>Function <ahref='../../index.html'>nix</a>::<wbr><ahref='../index.html'>sys</a>::<wbr><ahref='index.html'>sendfile</a>::<wbr><aclass="fn"href=''>sendfile</a></span></h1><preclass='rust fn'>pub fn sendfile(<br> in_fd: <aclass="type"href="https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/type.RawFd.html"title="type std::sys::unix::ext::io::RawFd">RawFd</a>, <br> out_sock: <aclass="type"href="https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/type.RawFd.html"title="type std::sys::unix::ext::io::RawFd">RawFd</a>, <br> offset: <aclass="type"href="../../../libc/unix/bsd/type.off_t.html"title="type libc::unix::bsd::off_t">off_t</a>, <br> count: <aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="type"href="../../../libc/unix/bsd/type.off_t.html"title="type libc::unix::bsd::off_t">off_t</a>>, <br> headers: <aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><aclass="primitive"href="https://doc.rust-lang.o
<code>out_sock</code>.</p>
<p>Returns a <code>Result</code> and a count of bytes written. Bytes written may be non-zero even if
an error occurs.</p>
<p><code>in_fd</code> must describe a regular file. <code>out_sock</code> must describe a stream socket.</p>
<p>If <code>offset</code> falls past the end of the file, the function returns success and zero bytes
written.</p>
<p>If <code>count</code> is <code>None</code> or 0, bytes will be read from <code>in_fd</code> until reaching the end of
file (EOF).</p>
<p><code>hdtr</code> specifies an optional list of headers and trailers to be sent before and after
the data read from <code>in_fd</code>, respectively. The length of headers and trailers sent is
included in the returned count of bytes written. If any headers are specified and
<code>count</code> is non-zero, the length of the headers will be counted in the limit of total
bytes sent. Trailers do not count toward the limit of bytes sent and will always be sent
regardless. The value of <code>offset</code> does not affect headers or trailers.</p>
<p>For more information, see
<ahref="https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man2/sendfile.2.html">the sendfile(2) man page.</a></p>
</div></section><sectionid="search"class="content hidden"></section><sectionclass="footer"></section><asideid="help"class="hidden"><div><h1class="hidden">Help</h1><divclass="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd>↑</kbd></dt><dd>Move up in search results</dd><dt><kbd>↓</kbd></dt><dd>Move down in search results</dd><dt><kbd>↹</kbd></dt><dd>Switch tab</dd><dt><kbd>⏎</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><divclass="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath="../../../";window.currentCrate="nix";</script><scriptsrc="../../../aliases.js"></script><scriptsrc="../../../main.js"></script><scriptdefersrc="../../../search-index.js"></script></body></html>