pub fn dup3(
old: BorrowedFd<'_>,
new: RawFd,
flags: Dup3Flags,
) -> Result<OwnedFd, Errno>Expand description
Duplique le descripteur old vers le numéro new (dup3(2)), en fermant
atomiquement new s’il était ouvert. Retourne le nouveau descripteur,
possédé ([OwnedFd], fermé au Drop).
Cf. docs/specs/layer-0/family-process.md. Variante moderne de dup2
(ADR-021) : les drapeaux sont explicites ([Dup3Flags], seul O_CLOEXEC
est valide). Cas d’usage couche 1 : rediriger les flux standard d’un enfant
(dup3(pipe, STDOUT_FILENO, …)) juste avant l’exec.
À la différence de dup2, dup3 échoue (EINVAL) si old == new :
pas de no-op silencieux. Le numéro new doit donc différer de old.
§Errors
- [
Errno::EINVAL] :flagsinvalides, ouold == new. - [
Errno::EBADF] :newhors de la plage autorisée (> RLIMIT_NOFILE). - [
Errno::EBUSY] : course (rare) avecopen/dupconcurrents surnew. - [
Errno::EINTR] : interrompu par un signal (remonté tel quel, ADR-021 convention 2).