GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser execl (exemple inclus)

execl est l'une des familles d'appels exec qui agissent comme un front-end pour execve. La capture d'écran suivante fait référence à man execl :

Les arguments de ces sept fonctions exec sont difficiles à retenir. Les lettres dans les noms de fonction aident quelque peu. La lettre p signifie que la fonction prend un argument de nom de fichier et utilise la variable d'environnement PATH pour trouver le fichier exécutable. La lettre l signifie que la fonction prend une liste d'arguments et est mutuellement exclusive avec la lettre v, ce qui signifie qu'elle prend un vecteur argv[]. Enfin, la lettre e signifie que la fonction prend un tableau envp[] au lieu d'utiliser l'environnement actuel.

Dans l'article "Utiliser execve", nous avons vu comment il peut être utilisé pour lancer un nouveau processus et également lui transmettre des arguments. execl lance également un nouveau processus remplaçant l'actuel. La syntaxe d'execl est :

int execl(const char *path, const char *arg, ...);

Argumentation :
chemin  :Chemin vers l'exécutable qui doit être exécuté par execl.
arg… :Série de pointeurs vers les arguments qui doivent être passés à l'exécutable.

Dans execve, nous devions passer un tableau de pointeurs comme arguments, mais dans execl, nous pouvons directement passer les pointeurs comme arguments. Ces arguments doivent se terminer par NULL.

Exemple

1. Écrivons un programme simple pour imprimer les arguments qui lui sont passés.

# vi hello.c
#include <stdio.h>
main(int argc,char *argv[],char *envp[]){

printf("Filename: %s\n",argv[0]);
printf("%s %s\n",argv[1],argv[2]);
}

2. Par convention, le premier argument doit toujours être le nom du fichier et nous suivrons la même chose. Compilons ceci et nommons l'exécutable "hello"

# cc hello.c -o hello

3. Écrivons maintenant un programme pour lancer l'exécutable "hello" en utilisant execl.

# vi execl.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

main() {
char *temp,*temp1,*temp2;
temp="hello";  //filename
temp1="Funny"; 
temp2="world";

execl("hello",temp,temp1,temp2,NULL);
printf("Error");
}

4. Compilez le code et exécutez-le :

# cc execl.c -o execl
./execl 

Sortie :

Filename: hello
Funny world

Ainsi, le programme pourrait exécuter avec succès l'exécutable "hello" et lui transmettre également les arguments. Notez également que execl n'est pas retourné à la fonction appelante, sinon il aurait imprimé l'instruction "Erreur" après l'appel à execl.


Linux
  1. Comment utiliser les commandes d'historique de Bash

  2. Comment j'utilise cron sous Linux

  3. Comment utiliser Nginx pour rediriger

  4. Comment utiliser la commande netstat sous Linux (exemples inclus)

  5. Comment utiliser dos2unix ?

Fonction Bash et comment l'utiliser {Variables, Arguments, Return}

Comment utiliser GeoIP avec Nginx sur Ubuntu 16.04

Comment utiliser Instagram dans le terminal

Comment utiliser la commande PS

Comment utiliser la commande TOP

Comment utiliser FTP