當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust SocketAncillary.add_fds用法及代碼示例


本文簡要介紹rust語言中 std::os::unix::net::SocketAncillary.add_fds 的用法。

用法

pub fn add_fds(&mut self, fds: &[RawFd]) -> bool

將文件說明符添加到輔助數據。

如果緩衝區中有足夠的空間,該函數將返回true。如果沒有足夠的空間,則不附加任何文件說明符。從技術上講,這意味著此操作會添加一個級別為 SOL_SOCKET 和類型為 SCM_RIGHTS 的控製消息。

示例

#![feature(unix_socket_ancillary_data)]
use std::os::unix::net::{UnixStream, SocketAncillary};
use std::os::unix::io::AsRawFd;
use std::io::IoSlice;

fn main() -> std::io::Result<()> {
    let sock = UnixStream::connect("/tmp/sock")?;

    let mut ancillary_buffer = [0; 128];
    let mut ancillary = SocketAncillary::new(&mut ancillary_buffer[..]);
    ancillary.add_fds(&[sock.as_raw_fd()][..]);

    let mut buf = [1; 8];
    let mut bufs = &mut [IoSlice::new(&mut buf[..])][..];
    sock.send_vectored_with_ancillary(bufs, &mut ancillary)?;
    Ok(())
}

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::os::unix::net::SocketAncillary.add_fds。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。