pub fn execve(
path: &CStr,
argv: &[&CStr],
envp: &[&CStr],
) -> Result<Infallible, Errno>Expand description
Remplace l’image mémoire du processus courant par l’exécutable situé à
path, avec les arguments argv et l’environnement envp.
Cf. docs/specs/layer-0/family-process.md. En cas de succès, ne retourne
jamais (le processus exécute désormais le nouveau binaire) — d’où le type
Result<Infallible, Errno> (ADR-021 convention 5). En cas d’échec, retourne
Err(errno).
argv / envp sont des tranches de CStr ; le wrapper en construit les
tableaux de pointeurs C NULL-terminés via CStrArray. Par convention
POSIX, argv[0] est le nom du programme ; une tranche vide est acceptée par
le kernel (argc == 0).
Pour exécuter un binaire désigné par un fd (sans race sur le chemin),
préférer execveat avec [ExecveatFlags::EMPTY_PATH].
§Errors
- [
Errno::EACCES] :pathn’est pas exécutable, un répertoire du chemin interdit la traversée, ou le système de fichiers est monténoexec. - [
Errno::ENOENT] :path(ou l’interpréteur#!d’un script) n’existe pas. - [
Errno::ENOEXEC] :pathexiste mais n’est pas dans un format exécutable reconnu (ni ELF, ni script avec#!). - [
Errno::E2BIG] :argv+envpdépassent la limite kernel (ARG_MAX). ENOMEM,ETXTBSY,ELOOP, … : cf.execve(2).