Skip to main content

tee

Function tee 

Source
pub fn tee(
    fd_in: BorrowedFd<'_>,
    fd_out: BorrowedFd<'_>,
    length: usize,
    flags: SpliceFlags,
) -> Result<usize, Errno>
Expand description

Duplique le contenu d’un pipe source dans un pipe destination sans consommer les données de la source.

Wrappeur de tee(2) (Linux 2.6.17+). Les deux FDs doivent être des pipes. Contrairement à splice, les données restent disponibles dans fd_in après l’opération.

§Parameters

  • fd_in : pipe source.
  • fd_out : pipe destination.
  • length : nombre maximum d’octets à dupliquer.
  • flags : drapeaux [SpliceFlags] (typiquement NONBLOCK).

§Errors

  • EINVAL : fd_in ou fd_out n’est pas un pipe.
  • EAGAIN : mode NONBLOCK et l’opération bloquerait.
  • EINTR : interrompu par un signal.

§Examples

use air_sys_syscall::ipc::{pipe2, tee};
use air_sys_types::{PipeFlags, SpliceFlags};
use air_sys_types::fd::AsFd;

let (r1, w1) = pipe2(PipeFlags::CLOEXEC).expect("pipe2");
let (r2, w2) = pipe2(PipeFlags::CLOEXEC).expect("pipe2");
let _ = tee(r1.as_fd(), w2.as_fd(), 4096, SpliceFlags::empty());