Systemopkaldet `execlp () 'i Linux bruges til at udføre et program, der erstatter den aktuelle kørselsproces med det nye program. "LP" i `execlp ()` står for "Liste over pointer", som henviser til de argumenter, der er videregivet til det nye program. Her er en detaljeret forklaring af, hvordan `execlp () 'fungerer:
Prototype:
`` c
int execlp (const char *fil, const char *arg0, ..., const char *argn, (char *) null);
`` `
Argumenter:
- `File`:Dette er stien til den eksekverbare fil eller program, du vil udføre.
-`Arg0`,` ..., `` Argn`:Dette er tip til nul-terminerede strenge, der repræsenterer de kommandolinjargumenter, der skal overføres til det nye program. `Arg0` skal altid være navnet på selve programmet.
- `(char *) null`:Dette er en påkrævet null -markør i slutningen af listen over argumenter. Det fungerer som en afgrænser for at indikere afslutningen på argumentlisten.
Beskrivelse:
- `execlp ()` er en variation af `execl () '-systemet, der bruger en forenklet, men alligevel fleksibel måde at videregive argumenter til det nye program. Den søger automatisk efter den eksekverbare fil i de mapper, der er specificeret af miljøvariablen "sti".
- Når `execlp ()` kaldes, erstattes den aktuelle kørselsproces af det nye program, der er specificeret af 'File'. Argumenterne `arg0`,` ..., `` Argn` er vedtaget som kommandolinjargumenter til det nye program.
- `execlp ()` vender ikke tilbage til opkaldsprocessen. I stedet overfører det kontrol til det nye program, der begynder udførelse. Hvis der er nogen fejl under udførelsen af `execlp ()`, såsom den eksekverbare fil, der ikke findes eller utilstrækkelige tilladelser, vil `execlp () 'opkaldet mislykkes og returnere -1, hvilket efterlader den aktuelle proces upåvirket.
Eksempel:
`` c
#include
#include
int main () {
// Udfør kommandoen "ls -l"
execlp ("ls", "ls", "-l", (char *) null);
// denne linje udføres kun, hvis execlp () mislykkes
Perror ("execlp () mislykkedes");
return 0;
}
`` `
I dette eksempel kører kommandoen `execlp ()` -systemet "ls -l" -kommandoen, der viser filerne i det aktuelle bibliotek med detaljerede oplysninger. Hvis `execlp ()` er vellykket, udføres kommandoen "ls -l", og kontrollen overføres til 'LS' -programmet. Hvis `execlp ()` møder en fejl, udskriver funktionen `Perror ()` en fejlmeddelelse til standardfejlstrømmen ("STDERR").
Vigtige punkter:
- `execlp ()` er en af flere `exec () 'familiefunktioner i Linux, der udfører den samme opgave med at udføre nye programmer, men med forskellige argumenthåndteringsmekanismer. Andre almindelige `exec ()` funktioner inkluderer `execl ()`, `execv ()`, `execvp ()` og `execve ()`.
- `execlp ()` søger kun efter den eksekverbare i de mapper, der er specificeret af den `sti 'miljøvariabel, så det er vigtigt at sikre, at den eksekverbare er til stede i et af disse mapper.
- Argumenterne `arg0`,` ..., `` argn` skal være nul-terminerede strenge. At videregive ikke-nul-terminerede strenge eller forsøge at videregive flere argumenter, end funktionen kan håndtere, kan føre til udefineret opførsel.
- Systemopkaldet `execlp ()` bruges i mange UNIX-lignende operativsystemer, ikke kun Linux.