Skip to main content

splice

Function splice 

Source
pub fn splice(
    fd_in: i32,
    off_in: Option<&mut i64>,
    fd_out: i32,
    off_out: Option<&mut i64>,
    len: usize,
    flags: u32,
) -> Result<usize>
Expand description

splice(2) 在两个 fd 之间内核态零拷贝移动数据。

至少一个 fd 必须是管道(pipe)。常用于 socket ↔ pipe ↔ socket 中继。

§参数

  • fd_in - 输入 fd(socket / file / pipe)
  • off_in - 输入偏移指针,None 表示使用当前文件偏移
  • fd_out - 输出 fd
  • off_out - 输出偏移指针,None 表示使用当前文件偏移
  • len - 最多移动的字节数(上限 2^31-1)
  • flags - splice 标志

§返回

实际移动的字节数(0 表示 EOF)

§错误

  • LinuxError::Syscall { "splice", errno } - 系统调用失败