GNU/Linux >> Znalost Linux >  >> Linux

Jak používat execl (včetně příkladu)

execl je jednou z rodin volání exec, která fungují jako frontend pro execve. Následující snímek obrazovky odkazuje na man execl:

Argumenty pro těchto sedm exec funkcí jsou těžko zapamatovatelné. Trochu pomáhají písmena v názvech funkcí. Písmeno p znamená, že funkce přebírá argument názvu souboru a používá proměnnou prostředí PATH k nalezení spustitelného souboru. Písmeno l znamená, že funkce přebírá seznam argumentů a vzájemně se vylučuje s písmenem v, což znamená, že bere vektor argv[]. Nakonec písmeno e znamená, že funkce používá pole envp[] namísto použití aktuálního prostředí.

V příspěvku „Using execve“ jsme viděli, jak jej lze použít ke spuštění nového procesu a také mu předat argumenty. execl také spustí nový proces, který nahradí stávající. Syntaxe execl je:

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

Argumenty :
cesta :Cesta ke spustitelnému souboru, který je třeba spustit pomocí execl.
arg… :Řada ukazatelů na argumenty, které je třeba předat spustitelnému souboru.

V execve jsme museli předat pole ukazatelů jako argumenty, ale v execlu můžeme ukazatele předat přímo jako argumenty. Tyto argumenty by měly být ukončeny hodnotou NULL.

Příklad

1. Napišme jednoduchý program pro tisk argumentů, které mu byly předány.

# 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. Podle konvence by první argument měl být vždy název souboru a my se budeme řídit stejným. Pojďme to zkompilovat a pojmenovat spustitelný soubor „hello“

# cc hello.c -o hello

3. Nyní napíšeme program, který spustí spustitelný soubor „hello“ pomocí 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. Zkompilujte kód a spusťte jej:

# cc execl.c -o execl
./execl 

Výstup:

Filename: hello
Funny world

Program tak mohl úspěšně spustit spustitelný soubor „hello“ a také mu předat argumenty. Všimněte si také, že execl se nevrátil k volající funkci, jinak by po volání execl vypsal příkaz „Error“.


Linux
  1. Jak používat vstupy ve skriptech shellu

  2. Jak používat příkaz netstat v systému Linux (včetně příkladů)

  3. jak používat pylint ve vim

  1. Jak mohu použít řádky souboru jako argumenty příkazu?

  2. Jak používat dos2unix?

  3. jak správně použít $1 v aliasu se dvěma argumenty

  1. Jak používat BusyBox na Linuxu

  2. Jak používat příkazy historie Bash

  3. Jak používám cron v Linuxu