pub fn close_range(
first: u32,
last: u32,
flags: CloseRangeFlags,
) -> Result<(), Errno>Expand description
close_range(first, last, flags) (Linux 5.9+) — ferme tous les descripteurs
de l’intervalle inclusif [first, last]. last == u32::MAX ferme tout à
partir de first.
Confinement (ADR-122) : un enfant forké ferme en un appel tous les fd hérités
hormis un keep-set (ring io_uring, sockets d’écoute, autres connexions), avant
de poser sa cage — évite un balayage /proc/self/fd (openat/getdents) qui, lui,
serait interdit par le profil confiné.
Contrairement à close, cette fonction ne consomme pas d’OwnedFd : elle
opère sur des numéros bruts (l’appelant garantit qu’aucun OwnedFd vivant ne
couvre l’intervalle, sous peine de double-fermeture au Drop).
§Errors
Errno::EINVAL:first > last, ouflagsnon reconnus.Errno::EMFILE/Errno::ENOMEM: avecCloseRangeFlags::UNSHARE, échec du dédoublement de la table de descripteurs.
§Examples
use air_sys_syscall::fs::close_range;
use air_sys_types::fs::CloseRangeFlags;
// Ferme tout à partir du fd 3 (garde stdin/stdout/stderr).
close_range(3, u32::MAX, CloseRangeFlags::empty()).expect("close_range");