Naučte se příkaz Linux - execl

Jméno: execl, execlp, execle, execv, execvp - spustit soubor

Synopse

#include

externí char ** prostředí;

int execl (const char * cesta , const char * arg , ...);
int execlp (const char * soubor , const char * arg , ...);
int execle (const char * cesta , const char * arg , ..., char * const envp []);
int execv (const char * cesta , char * const argv []);
int execvp (const char * soubor , char * const argv []);

Popis

Funkce rodiny funkcí nahrazuje současný obraz procesu novým obrazem procesu . Funkce popsané v této příručce jsou fronty pro funkci execve (2). Počátečním argumentem pro tyto funkce je cesta k souboru, který má být proveden.

Konstanta char * arg a následné elipsy v execl , execlp a execle funkce lze považovat za arg0 , arg1 , ..., argn . Společně popisují seznam jednoho nebo více ukazatelů na řetězce s nulovými konci, které představují seznam argumentů dostupného pro spuštěný program. První argument podle konvence by měl odkazovat na název souboru přidružený k spuštěnému souboru . Seznam argumentů musí být ukončen ukazatelem NULL .

Funkce execv a execvp poskytují pole ukazatelů na řetězce ukončené null, které představují seznam argumentů dostupný pro nový program. První argument podle konvence by měl odkazovat na název souboru přidružený k spuštěnému souboru. Pole ukazatelů musí být ukončeno ukazatelem NULL .

Funkce execle také určuje prostředí provedeného procesu tak, že následuje ukazatel NULL, který ukončí seznam argumentů v seznamu parametrů nebo ukazatel na pole argv s dalším parametrem. Tento dodatečný parametr je pole ukazatelů na řetězce s nulovými konci a musí být ukončeno ukazatelem NULL . Ostatní funkce berou prostředí pro nový procesní obraz z externího proměnného prostředí v aktuálním procesu.

Některé z těchto funkcí mají speciální sémantiku.

Funkce execlp a execvp duplikují akce shellu při hledání spustitelného souboru, pokud zadaný název souboru neobsahuje znak lomítka (/). Vyhledávací cesta je cesta zadaná v prostředí pomocí proměnné PATH . Není-li tato proměnná zadána, použije se výchozí cesta ``: / bin: / usr / bin ''. Kromě toho se s některými chybami zachází speciálně.

Pokud je soubor s oprávněním odepřen (pokus o provedení příkazu EACCES byl vrácen), budou tyto funkce pokračovat v hledání ostatních cest. Pokud však není nalezen žádný jiný soubor, vrátí se s globální proměnnou errno nastavenou na EACCES .

Pokud není záhlaví souboru rozpoznán (pokus o provedení příkazu vrátil ENOEXEC ), tyto funkce spustí shell s cestou souboru jako prvním argumentem. (Pokud tento pokus selže, není provedeno žádné další vyhledávání.)

Návratová hodnota

Pokud se některá z funkcí exec vrátí, dojde k chybě. Hodnota návratu je -1 a globální proměnná errno bude nastavena tak, aby indikovala chybu.