Naučte sa príkaz Linux - execl

Meno: execl, execlp, execle, execv, execvp - spúšťať súbor

synopse

#include

externé char ** prostredie;

int execl (const char * cesta , const char * arg , ...);
int execlp (const char * súbor , 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 * súbor , char * const argv []);

popis

Rodina funkcií exec nahrádza aktuálny procesný obrázok novým procesným obrázkom. Funkcie popísané v tejto príručke sú predné strany funkcií execve (2). Počiatočným argumentom pre tieto funkcie je cesta k súboru, ktorý sa má spustiť.

Konštanta char * arg a následné elipsy vo funkciách execl , execlp a execle možno považovať za arg0 , arg1 , ..., argn . Spoločne opisujú zoznam jedného alebo viacerých ukazovateľov reťazcov s nulovou koncovkou, ktoré predstavujú zoznam argumentov dostupných vykonanému programu. Prvý argument podľa konvencie by mal poukazovať na názov súboru priradený spustenému súboru . Zoznam argumentov musí byť ukončený ukazovateľom NULL .

Funkcie execv a execvp poskytujú pole ukazovateľov reťazcom s nulovou koncovkou, ktoré predstavujú zoznam argumentov dostupný pre nový program. Prvý argument podľa konvencie by mal poukazovať na názov súboru priradený spustenému súboru. Pole ukazovateľov musí byť ukončené ukazovateľom NULL .

Funkcia execle tiež špecifikuje prostredie vykonaného procesu sledovaním ukazovateľa NULL, ktorý ukončí zoznam argumentov v zozname parametrov alebo ukazovateľ na pole argv s ďalším parametrom. Tento dodatočný parameter je pole ukazovateľov na reťazce ukončené nulou a musí byť ukončené ukazovateľom NULL . Ostatné funkcie zaberajú prostredie pre nový obraz procesu z vonkajšieho premenného prostredia v aktuálnom procese.

Niektoré z týchto funkcií majú špeciálnu sémantiku.

Funkcie execlp a execvp budú duplikovať akcie shellu pri hľadaní spustiteľného súboru, ak zadaný názov súboru neobsahuje znak lomítka (/). Vyhľadávacia cesta je cesta špecifikovaná v prostredí pomocou premennej PATH . Ak táto premenná nie je zadaná, použije sa predvolená cesta ``: / bin: / usr / bin ''. Navyše sa s určitými chybami zaobchádza špeciálne.

Ak je súbor zamietnutý (pokus o vykonanie vrátenia EACCES ), tieto funkcie budú pokračovať v hľadaní zvyšku cesty vyhľadávania. Ak sa však nenájde žiadny iný súbor, vrátia sa s globálnou premennou chyby nastavenou na EACCES .

Ak hlavička súboru nie je rozpoznaná (pokus o vykonanie vráti ENOEXEC ), tieto funkcie vykonajú shell s cestou súboru ako jeho prvý argument. (Ak sa tento pokus nepodarí, ďalšie vyhľadávanie sa nevykoná.)

Hodnota návratnosti

Ak sa vráti niektorá z funkcií exec , dôjde k chybe. Hodnota vrátenia je -1 a globálna premenná errno bude nastavená na označenie chyby.