pub fn openat2(
dirfd: DirFd<'_>,
path: &CStr,
how: OpenHow,
) -> Result<OwnedFd, Errno>Expand description
Ouvre un fichier avec contrôle de résolution de chemin avancé.
Wrappeur de openat2(2) (Linux 5.6+, numéro 437). Préféré à
openat car il permet de contraindre la résolution de chemin via
[OpenHow::resolve]. Retombe automatiquement sur openat si le
kernel retourne ENOSYS (< Linux 5.6).
O_CLOEXEC est toujours ajouté aux flags par le wrapper —
tous les FDs ouverts par Air ont CLOEXEC par défaut.
§Parameters
dirfd: répertoire de base pour la résolution ([DirFd::Cwd] ou un FD de répertoire).path: chemin relatif àdirfd(ou absolu sidirfdest ignoré).how: flags, mode et politique de résolution.
§Errors
EACCES: permissions insuffisantes.ENOENT: chemin inexistant (sansCREAT).EEXIST: fichier existant avecCREAT | EXCL.EISDIR: ouverture en écriture d’un répertoire.ENOTDIR: un composant du chemin n’est pas un répertoire.EXDEV: violation deRESOLVE_NO_XDEV.EAGAIN: violation deRESOLVE_BENEATHouRESOLVE_NO_SYMLINKS.ENFILE/EMFILE: quotas FD atteints.
§Examples
use air_sys_syscall::fs::openat2;
use air_sys_types::fs::{DirFd, OpenHow, OpenFlags, ResolveFlags};
let how = OpenHow {
flags: OpenFlags::RDONLY,
mode: 0,
resolve: ResolveFlags::BENEATH | ResolveFlags::NO_SYMLINKS,
};
let fd = openat2(DirFd::Cwd, c"./config.toml", how).expect("openat2");