EXECVP -funksjon i C

EXECVP -funksjon i C

ExecVP () -funksjonen tilhører Exec -familien. I dagens emne vil vi diskutere egenskapene og anvendelsen av EXECVP () -funksjonen under EXEC Family.

Funksjonen til Exec -familien på C -språk hjelper oss med å utføre andre programmer i programmet vårt. For å gjøre det fra programmet mitt bruker vi et sett med funksjon som heter Exec Family of Function, og disse er i Linux -programmet.

ANVENDELSE AV EXECVP () FUNKSJON

Hvis vi ønsker å utføre en ping av program, kan vi bruke dette gjennom ExecVP () -funksjonen. For dette må vi bruke matrise. Bokstaven 'V' brukt for execVp () -funksjonen står for vektor.

Syntaks

Syntaks for execVp () -funksjon:

int execvp (const char *fil, char *const)

Her er den første parameteren en filpeker som peker en fil som skal utføres i programmet.

Den andre parameteren er en pekerkonstant som er karakter i type og skal brukes som null terminator.

Programmering Eksempel 1

Her vil vi se hvordan EXECVP () -funksjonen faktisk fungerer i programmet vårt.

#inkludere
#inkludere
#inkludere
#include // inkludert denne filen for Linux -plattformen
int main (int argc, char *argv [])

char *ar [10] = "ping", "google.com ","-c10 ", null; // erklæring og initialisering av en matrise
execvp ("ping", ar);
printf ("Det får ikke noe svar når execVp () -funksjonen utfører først \ n"
// Denne uttalelsen kjører ikke fordi ExecVP () tar kontroll over programmet hvis ExecVP returnerte suksess.
retur 0;

Produksjon

Forklaring
I dette programmeringseksemplet, hvis vi vil pinge “Google.com ”Med hjelp av ExecVP () -funksjon i Linux -plattformen, må vi inkludere en overskriftsfil som heter Unistd.H i vårt program.

For å utføre ExecVP () -funksjonen, må vi erklære en matrise (faktisk rekke streng) som heter AR [] og initialiserte noen verdier som "ping", "Google.com ”og null.

Hvis vi nå vil prøve å passere argumentet i parentesen til ExecVP () -funksjonen, vil vi merke at den pinger Google.com som en utgang.

Programmering Eksempel 2

Her viser vi en annen applikasjon av ExecVP () -funksjonen.

#include // inkludert denne filen for Linux -plattformen
#inkludere
#inkludere
#inkludere
int main ()

char *cmd = "cd";
char *arr_ls [] = "cd", "/root/ingenting", null; // erklæring og initialisering av en matrise
errno = 0;
int id = execvp (cmd, arr_ls);
if (id == -1)

printf ("\ nhere er feilnummeret som returneres av execvp:%d \ n", errno);
if (errno == 2)
printf ("!!Ingen slik fil eller katalog!!\ n ");
ellers
Perror ("execvp");

printf ("Hvis execvp returnerer suksess, vil vi ikke se denne linjen ellers vil vi se denne linjen. \ n ");
retur 0;

Produksjon

Forklaring
I dette programmeringseksemplet vil vi se om ExecVP () -funksjonen vil returnere falsk verdi. Hvis execVp () -funksjonen returnerer falsk verdi, trykket den verdien av "erorno ” som er 2 og skriv ut meldingen som “Ingen slik fil eller katalog”.

Hvis ExecVP () -funksjonen returnerer ekte verdi, vil ikke noen uttalelse etter EXECVP bli kjørt. Som vi vet fra egenskapene til EXECVP () -funksjonen, blir ingen linje utført når EXECVP () -funksjonen tar kontroll over programmet.

Programmeringseksempel 3

I dette programmeringseksemplet vil vi se den viktige anvendelsen av EXECVP () -funksjon relatert til gaffelen () eller prosessen.

#inkludere
#inkludere
int main ()

char *cmd = "ls";
char *arg_ls [] = "ls", "-l", null;
printf ("Eksempel på utførelsen av en uttalelse før execVp () påberopes \ n");
printf ("Vi introduserer en prosess som indikerer en gaffel \ n");
if (gaffel () == 0) // Barneprosess introduseres som styres av "LS-L"

int sts_cd = execvp (cmd, arg_ls);
printf ("Denne uttalelsen utfører det betyr at det er et problem som kjører kommandoen \ n");
if (sts_cd == -1)

printf ("execvp feil! \ n ");
retur 1;


annet // Foreldreprogrammet kjører her

printf ("Denne uttalelsen utfører det betyr tilbake til hovedprogrammet \ n");

retur 0;

Produksjon

Forklaring
Som alle funksjonene til Exec -familien i C, kan ExecVP () -funksjon utføre andre programmer i programmet vårt.

I dette programmeringseksemplet erklærer vi en karaktergruppe eller et strengnavn arg_ls []. Inne i denne strengen initialiserer vi noen verdier og null også. Deretter kaller vi en annen prosess som heter Fork ().

Her returnerer ExecVp () funksjon True Value. Så gaffel () -funksjonen kan utføre sin handling med hell. Hvis ikke, vil det gå til hovedprogrammet.

Programmering Eksempel 4

Her vil vi se en annen funksjon i ExecVP () -funksjonen.

#inkludere
#inkludere
int main ()

char *cmd = "cd";
char *arg_ls [] = "cd", "/root/bam", null;
printf ("Eksempel på utførelsen av en uttalelse før execVp () påberopes \ n");
printf ("Vi introduserer en prosess som indikerer en gaffel \ n");
if (gaffel () == 0) // Barneprosess introduseres som styres av "LS-L"

int sts_cd = execvp (cmd, arg_ls);
printf ("Denne uttalelsen utfører det betyr at det er et problem som kjører kommandoen \ n");
if (sts_cd == -1)

printf ("execvp feil! \ n ");
retur 1;


annet // Foreldreprogrammet kjører her

printf ("Denne uttalelsen utfører det betyr tilbake til hovedprogrammet \ n");

retur 0;

Produksjon

Forklaring
Ovennevnte programmeringseksempel er den modifiserte versjonen av programmeringseksempel 3. Her vil vi se om funksjonsgaffel () kommer tilbake '0'. Deretter vil barneprosessen utføre koden sin og kontrolleres av “LS-“ L kommando. Verdien som vil returnere execVp () er tilordnet en variabel som er navngitt STS_CD. Hvis STS_CD Vil se verdien -1, så vil vi forstå at det er en feil i ExecVP () -funksjonen. Ellers tar denne funksjonen kontroll over resten av programmet.

Konklusjon

Fra diskusjonen ovenfor om implementering av EXECVP () i Exec -familien, har vi kommet til at det erstatter et prosessbilde med et nytt bilde i vår RAM (Random Access Memory) for å utføre den nye prosessen. Egentlig hjelper denne funksjonen operativsystemet vårt med å administrere alle prosessene som er klare til å utføre av prosessoren med mindre tid.