GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare execl (esempio incluso)

execl è una delle famiglie di chiamate exec che fungono da front-end per execve. Lo screenshot seguente si riferisce a man execl:

Gli argomenti per queste sette funzioni exec sono difficili da ricordare. Le lettere nei nomi delle funzioni aiutano in qualche modo. La lettera p significa che la funzione accetta un argomento di nome file e utilizza la variabile di ambiente PATH per trovare il file eseguibile. La lettera l significa che la funzione accetta un elenco di argomenti e si esclude a vicenda con la lettera v, il che significa che accetta un vettore argv[]. Infine, la lettera e significa che la funzione accetta un array envp[] invece di utilizzare l'ambiente corrente.

Nel post "Using execve" abbiamo visto come può essere utilizzato per avviare un nuovo processo e anche passare argomenti ad esso. execl lancia anche un nuovo processo che sostituisce quello attuale. La sintassi di execl è:

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

Argomenti :
percorso :Percorso dell'eseguibile che deve essere eseguito da escl.
arg... :serie di puntatori agli argomenti che devono essere passati all'eseguibile.

In execve dovevamo passare un array di puntatori come argomenti, ma in execl possiamo passare direttamente i puntatori come argomenti. Questi argomenti devono essere terminati con NULL.

Esempio

1. Scriviamo un semplice programma per stampare gli argomenti passati.

# 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. Per convenzione il primo argomento dovrebbe essere sempre il nome del file e seguiremo lo stesso. Compiliamo questo e chiamiamo l'eseguibile "ciao"

# cc hello.c -o hello

3. Ora scriviamo un programma per eseguire l'eseguibile "ciao" usando 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. Compila il codice ed eseguilo:

# cc execl.c -o execl
./execl 

Uscita:

Filename: hello
Funny world

Pertanto il programma potrebbe eseguire correttamente l'eseguibile "ciao" e anche passargli gli argomenti. Inoltre, nota che execl non è tornato alla funzione chiamante, altrimenti avrebbe stampato l'istruzione "Error" dopo la chiamata a execl.


Linux
  1. Come usare BusyBox su Linux

  2. Come usare i comandi della cronologia di Bash

  3. Come uso cron in Linux

  4. come usare pylint in vim

  5. Come utilizzo le righe di un file come argomenti di un comando?

Funzione Bash e come usarla {Variabili, argomenti, ritorno}

Come utilizzare GeoIP con Nginx su Ubuntu 16.04

Come utilizzare Instagram nel terminale

Come usare il comando PS

Come usare il comando TOP

Come utilizzare FTP