from github to this gitea

This commit is contained in:
oscar.plaisant@icloud.com
2023-10-23 23:09:51 +02:00
commit a2ee0fa5ca
2898 changed files with 307871 additions and 0 deletions

64
unix primitive exec.md Normal file
View File

@@ -0,0 +1,64 @@
up:: [[C primitives système]]
title:: "exécuter un fichier binaire"
#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
```C
#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
```C
#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
```C
#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