cours/unix primitive exec.md
Oscar Plaisant 602a41e7f8 update
2024-12-25 22:30:24 +01:00

1.4 KiB

up:: C primitives système title:: "exécuter un fichier binaire" #s/informatique/unix


Types de exec :

  • execv : prends un tableau en entrée
  • execl : prends une liste en entrée
  • ajouter un p (execvp et execlp) : cherche les exécutables binaires dans la variable d'environnement PATH

Exemples

execv

#include<stdlib.h>
#include<unistd.h>

int main(){
    char *executable = "/bin/ls";
    // tableau de pointeurs vers des char, terminé par NULL
    // il faut mettre le nom de l'exécutable
    char *args[] = {executable, "-l",NULL};
    execv(executable, args);
}

execvp

#include<stdlib.h>
#include<unistd.h>

int main(){
    char *executable = "ls";
    // tableau de pointeurs vers des char, terminé par NULL
    // il faut mettre le nom de l'exécutable
    char *args[] = {executable, "-l", NULL};
    // avec le p, exec va chercher dans le $PATH
    // on peut donc utiliser "ls" plutôt que "/bin/ls"
    execvp(executable, args);
}

execl

#include<stdlib.h>
#include<unistd.h>

int main(){
    char *executable = "/bin/ls";
    // il faut mettre 2 fois le nom de l'exécutable
    // la seconde fois fait en fait partie des paramètres
    // /!\ il faut bien penser à finir avec NULL
    execl(executable, executable, "-l", NULL);
}
  • les arguments sont passés en paramètres de la fonction
  • il faut penser à mettre NULL à la fin