C Programmering

Exec System Call i C

Exec System Call i C
Exec-familjen har många funktioner i C. Dessa C-funktioner används i princip för att köra ett systemkommando i en separat process som huvudprogrammet och skriva ut utdata.

I den här artikeln ska jag prata om exec-familjen av funktioner och visa dig hur du använder var och en av dessa exec-familjefunktioner i C. Så, låt oss komma igång.

C-systemfunktioner i Exec-familjen:

Familjerna exec-funktioner definieras i rubriken unistd.h. Så du måste använda den här rubriken i C-programmet där du vill använda dessa funktioner.

De tillgängliga exec-funktionerna tillsammans med deras funktionsparametrar ges nedan:

Låt oss se vad var och en av dessa funktioner gör och hur man använder dem.

execl () Systemfunktion:

I execl () tar systemfunktionen sökvägen till den körbara binära filen (i.e. / bin / ls) som första och andra argumentet. Sedan är argumenten (i.e. -lh, /Hem) som du vill skicka till den körbara följt av NULL. Sedan kör execl () systemfunktionen kommandot och skriver ut utdata. Om något fel inträffar returnerar execl () -1. Annars returnerar den ingenting.

Syntax:

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

Ett exempel på systemfunktionen execl () ges nedan:

#omfatta
 
int main (void)
char * binaryPath = "/ bin / ls";
char * arg1 = "-lh";
char * arg2 = "/ home";
 
execl (binaryPath, binaryPath, arg1, arg2, NULL);
 
returnera 0;

Jag körde ls -lh / hem kommando med execl () systemfunktion. Som du kan se visas rätt resultat.

execlp () Systemfunktion:

execl () använder inte VÄG miljöfaktor. Så den fullständiga sökvägen till den körbara filen krävs för att köra den med execl (). execlp () använder miljövariabeln PATH. Så om en körbar fil eller ett kommando är tillgängligt i PATH, är kommandot eller filnamnet tillräckligt för att köra det, hela sökvägen behövs inte.

Syntax:

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

Vi kan skriva om execl () -exemplet med execlp () -systemfunktionen enligt följande:

#omfatta
 
int main (void)
char * programName = "ls";
char * arg1 = "-lh";
char * arg2 = "/ home";
 
execlp (programnamn, programnamn, arg1, arg2, NULL);
 
returnera 0;

Jag passerade bara kommandot ls, inte hela vägen / bin / ls. Som du kan se fick jag samma utdata som tidigare.

execv () Systemfunktion:

I execl () -funktionen skickas parametrarna för den körbara filen till funktionen som olika argument. Med execv () kan du skicka alla parametrar i en NULL-avslutad matris argv. Det första elementet i matrisen ska vara sökvägen till den körbara filen. Annars fungerar execv () -funktionen precis som execl () -funktionen.

Syntax:

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

Vi kan skriva om execl () -exemplet enligt följande:

#omfatta
 
int main (void)
char * binaryPath = "/ bin / ls";
char * args [] = binaryPath, "-lh", "/ home", NULL;
 
execv (binaryPath, args);
 
returnera 0;

Som du kan se får jag rätt utdata.

execvp () Systemfunktion:

Fungerar på samma sätt som execv () systemfunktion. Men PATH-miljövariabeln används. Så den fullständiga sökvägen till den körbara filen krävs inte precis som i execlp ().

Syntax:

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

Vi kan skriva om execv () -exemplet enligt följande:

#omfatta
 
int main (void)
char * programName = "ls";
char * args [] = programnamn, "-lh", "/ home", NULL;
 
execvp (programnamn, args);
 
returnera 0;

Som du kan se visas rätt utdata.

execle () Systemfunktion:

Fungerar precis som execl () men du kan tillhandahålla dina egna miljövariabler tillsammans med den. Miljövariablerna skickas som en matris envp. Det sista elementet i envp array ska vara NULL. Alla andra element innehåller nyckel-värdepar som sträng.

Syntax:

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

Ett exempel på execle () systemfunktionen ges nedan:

#omfatta
 
int main (void)
char * binaryPath = "/ bin / bash";
char * arg1 = "-c";
char * arg2 = "echo" Besök $ HOSTNAME: $ PORT från din webbläsare."";
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execle (binaryPath, binaryPath, arg1, arg2, NULL, env);
 
returnera 0;

Jag klarade två miljövariabler VÄSTNAMN och HAMN till execle () -funktionen. Som du kan se kan jag komma åt dem från den körbara filen / bin / bash.

execve () Systemfunktion:

Precis som execle () kan du tillhandahålla dina egna miljövariabler tillsammans med execve (). Du kan också skicka argument som arrays som du gjorde i execv ().

Syntax:

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

Execle () -exemplet kan skrivas om enligt följande:

#omfatta
 
int main (void)
char * binaryPath = "/ bin / bash";
char * const args [] = binaryPath, "-c", "echo" Besök $ HOSTNAME: $ PORT
från din webbläsare."", NULL;
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
exekvera (binaryPath, args, env);
 
returnera 0;

Som du ser får vi samma utdata som i execle () -exemplet.

Så det är så du använder exec-funktionsfamiljen i C för systemprogrammering i Linux. Tack för att du läste den här artikeln.

5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...
Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...
Så här installerar du League Of Legends på Ubuntu 14.04
Om du gillar League of Legends är det här en möjlighet för dig att testa League of Legends. Observera att LOL stöds på PlayOnLinux om du är en Linux-a...