EXEC SYSTEM CALL IN C

EXEC SYSTEM CALL IN C
Exec -familien har mange funksjoner i C. Disse C -funksjonene brukes i utgangspunktet til å kjøre en systemkommando i en egen prosess som hovedprogrammet og skrive ut utdataene.

I denne artikkelen skal jeg snakke om eksekutive funksjoner og vise deg hvordan du bruker hver enkelt av disse exec -familiefunksjonen i C. Så la oss komme i gang.

C Systemfunksjoner i EXEC -familie:

Exec -funksjonen familier er definert i overskriften Unistd.h. Så du må bruke denne overskriften på C -programmet der du vil bruke disse funksjonene.

De tilgjengelige EXEC -funksjonene sammen med deres funksjonsparametere er gitt nedenfor:

  • int execl (const char *path, const char *arg,…, null);
  • int execlp (const char *fil, const char *arg,…, null);
  • int execv (const char *path, char *const argv []);
  • int execvp (const char *fil, char *const argv []);
  • int execle (const char *path, const char *arg,…, null, char *const envp []));
  • int execve (const char *fil, char *const argv [], char *const envp []);

La oss se hva hver av disse funksjonene gjør og hvordan du bruker dem.

Execl () Systemfunksjon:

I execl () systemfunksjon tar banen til den kjørbare binære filen (i.e. /bin/ls) som første og andre argument. Deretter argumentene (jeg.e. -LH, /hjem) at du vil gå over til den kjørbare etterfulgt av NULL. Deretter kjører System -funksjonsfunksjonen kommandoen og skriver ut utgangen. Hvis det oppstår feil, returnerer execl () -1. Ellers returnerer det ingenting.

Syntaks:

int execl (const char *path, const char *arg,…, null);

Et eksempel på execl () -systemfunksjonen er gitt nedenfor:

#inkludere
int main (void)
char *binarypath = "/bin/ls";
char *arg1 = "-lh";
char *arg2 = "/home";
Execl (BinaryPath, BinaryPath, Arg1, Arg2, NULL);
retur 0;

Jeg kjørte ls -lh /Home Kommando ved hjelp av execl () systemfunksjon. Som du ser vises riktig resultat.

EXECLP () Systemfunksjon:

execl () bruker ikke STI miljøvariabel. Så den fullstendige banen til den kjørbare filen er nødvendig for å kjøre den med execl (). execlp () bruker banemiljøvariabelen. Så hvis en kjørbar fil eller kommando er tilgjengelig i banen, er ikke kommandoen eller filnavnet nok til å kjøre den, er ikke full vei nødvendig.

Syntaks:

int execlp (const char *fil, const char *arg,…, null);

Vi kan omskrive Execl () -eksemplet ved å bruke SECTLP () systemfunksjonen som følger:

#inkludere
int main (void)
char *programname = "ls";
char *arg1 = "-lh";
char *arg2 = "/home";
execlp (programnavn, programnavn, arg1, arg2, null);
retur 0;

Jeg passerte bare kommandonavnet ls, ikke hele veien /bin/ls. Som du ser, fikk jeg den samme produksjonen som før.

execv () Systemfunksjon:

I Execl () -funksjonen sendes parametrene til den kjørbare filen til funksjonen som forskjellige argumenter. Med execv () kan du passere alle parametrene i en null avsluttet matrise Argv. Det første elementet i matrisen skal være banen til den kjørbare filen. Ellers fungerer execv () -funksjonen akkurat som execl () -funksjonen.

Syntaks:

int execv (const char *path, char *const argv []);

Vi kan omskrive Execl () -eksemplet som følger:

#inkludere
int main (void)
char *binarypath = "/bin/ls";
char *args [] = binarypath, "-lh", "/home", null;
Execv (BinaryPath, Args);
retur 0;

Som du ser, får jeg riktig produksjon.

EXECVP () Systemfunksjon:

Fungerer på samme måte som execv () systemfunksjon. Men banemiljøvariabelen brukes. Så den fullstendige banen til den kjørbare filen er ikke påkrevd akkurat som i execlp ().

Syntaks:

int execvp (const char *fil, char *const argv []);

Vi kan omskrive Execv () -eksemplet som følger:

#inkludere
int main (void)
char *programname = "ls";
char *args [] = programname, "-lh", "/home", null;
execvp (programname, args);
retur 0;

Som du ser vises riktig utgang.

ExecLe () Systemfunksjon:

Fungerer akkurat som execl (), men du kan gi dine egne miljøvariabler sammen med den. Miljøvariablene sendes som en matrise Envp. Det siste elementet i Envp Array skal være null. Alle de andre elementene inneholder nøkkelverdiparene som streng.

Syntaks:

int execle (const char *path, const char *arg,…, null, char *const envp []));

Et eksempel på execle () -systemfunksjonen er gitt nedenfor:

#inkludere
int main (void)
char *binarypath = "/bin/bash";
char *arg1 = "-c";
char *arg2 = "ekko" besøk $ vertsnavn: $ port fra nettleseren din."";
char *const env [] = "hostname = www.Linuxhint.com "," port = 8080 ", null;
Execle (BinaryPath, BinaryPath, Arg1, Arg2, Null, Env);
retur 0;

Jeg passerte to miljøvariabler Vertsnavn og HAVN til execle () -funksjonen. Som du kan se, kan jeg få tilgang til dem fra den kjørbare /bin/bash.

Execve () Systemfunksjon:

Akkurat som execle () kan du tilby dine egne miljøvariabler sammen med execve (). Du kan også passere argumenter som matriser som du gjorde i execv ().

Syntaks:

int execve (const char *fil, char *const argv [], char *const envp []);

Execle () -eksemplet kan skrives om som følger:

#inkludere
int main (void)
char *binarypath = "/bin/bash";
char *const args [] = binarypath, "-c", "ekko" besøk $ vertsnavn: $ port
fra nettleseren din."", NULL;
char *const env [] = "hostname = www.Linuxhint.com "," port = 8080 ", null;
Execve (BinaryPath, Args, Env);
retur 0;

Som du kan se, får vi samme utgang som i Execle () -eksemplet.

Så det er slik du bruker Exec -funksjonen i C for systemprogrammering i Linux. Takk for at du leste denne artikkelen.