C Programiranje

Exec System Call u C

Exec System Call u C
Obitelj exec ima mnoge funkcije u C-u. Ove se funkcije C u osnovi koriste za pokretanje sistemske naredbe u odvojenom procesu koji glavni program i ispis rezultata.

U ovom članku govorit ću o exec obitelji funkcija i pokazati vam kako koristiti svaku od ovih funkcija exec obitelji u C. Pa, krenimo.

Funkcije sustava C u obitelji Exec:

Obitelji exec funkcija definirane su u zaglavlju unistd.h. Dakle, ovo zaglavlje morate koristiti na programu C gdje želite koristiti ove funkcije.

Dostupne izvršne funkcije zajedno s njihovim funkcijskim parametrima dane su u nastavku:

Pogledajmo što svaka od ovih funkcija radi i kako ih koristiti.

execl () Funkcija sustava:

U execl () sistemska funkcija prelazi put izvršne binarne datoteke (tj.e. / bin / ls) kao prvi i drugi argument. Zatim, argumenti (tj.e. -lh, /Dom) koji želite proslijediti na izvršnu datoteku, a zatim slijedi NULL. Tada funkcija sustava execl () pokreće naredbu i ispisuje izlaz. Ako se dogodi bilo kakva pogreška, tada execl () vraća -1. Inače, ništa ne vraća.

Sintaksa:

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

Primjer funkcije sustava execl () dan je u nastavku:

#include
 
int main (void)
char * binaryPath = "/ bin / ls";
char * arg1 = "-lh";
char * arg2 = "/ dom";
 
execl (binarni put, binarni put, arg1, arg2, NULL);
 
return 0;

Vodio sam ls -lh / dom naredba pomoću funkcije sustava execl (). Kao što vidite, prikazuje se točan rezultat.

execlp () Funkcija sustava:

execl () ne koristi STAZA varijabla okoline. Dakle, za pokretanje s execl () potreban je puni put izvršne datoteke. execlp () koristi varijablu okruženja PATH. Dakle, ako je izvršna datoteka ili naredba dostupna u PATH-u, tada je naredba ili naziv datoteke dovoljan za njeno pokretanje, puni put nije potreban.

Sintaksa:

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

Primjer execl () možemo prepisati pomoću sistemske funkcije execlp () na sljedeći način:

#include
 
int main (void)
char * programName = "ls";
char * arg1 = "-lh";
char * arg2 = "/ dom";
 
execlp (programName, programName, arg1, arg2, NULL);
 
return 0;

Propustio sam samo ime naredbe ls, ne puni put / bin / ls. Kao što vidite, dobio sam isti izlaz kao i prije.

execv () Funkcija sustava:

U funkciji execl (), parametri izvršne datoteke prenose se u funkciju kao različiti argumenti. Pomoću execv () možete proslijediti sve parametre u NULL završenom nizu argv. Prvi element polja trebao bi biti put izvršne datoteke. Inače, funkcija execv () radi jednako kao i funkcija execl ().

Sintaksa:

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

Primjer execl () možemo prepisati na sljedeći način:

#include
 
int main (void)
char * binaryPath = "/ bin / ls";
char * args [] = binaryPath, "-lh", "/ home", NULL;
 
execv (binarni put, argumenti);
 
return 0;

Kao što vidite, dobivam ispravan rezultat.

execvp () Funkcija sustava:

Radi na isti način kao i funkcija sustava execv (). Ali, koristi se varijabla okruženja PATH. Dakle, puni put izvršne datoteke nije potreban baš kao u execlp ().

Sintaksa:

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

Primjer execv () možemo prepisati na sljedeći način:

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

Kao što vidite, prikazuje se ispravan izlaz.

execle () Funkcija sustava:

Djeluje poput execl (), ali uz to možete pružiti i vlastite varijable okruženja. Varijable okruženja prenose se kao niz envp. Posljednji element envp niz bi trebao biti NULL. Svi ostali elementi sadrže parove ključ / vrijednost kao niz.

Sintaksa:

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

Primjer funkcije sustava execle () dan je u nastavku:

#include
 
int main (void)
char * binaryPath = "/ bin / bash";
char * arg1 = "-c";
char * arg2 = "echo" Posjetite $ HOSTNAME: $ PORT iz svog preglednika."";
char * const env [] = "HOSTNAME = www.linuxhint.com "," LUKA = 8080 ", NULL;
 
execle (binarni put, binarni put, arg1, arg2, NULL, env);
 
return 0;

Prošao sam dvije varijable okoline PRIMEN i LUKA na funkciju execle (). Kao što vidite, mogu im pristupiti iz izvršne datoteke / bin / bash.

execve () Funkcija sustava:

Baš kao i execle (), možete pružiti vlastite varijable okruženja zajedno s execve (). Također možete proslijediti argumente kao nizove kao što ste to učinili u execv ().

Sintaksa:

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

Primjer execle () može se prepisati na sljedeći način:

#include
 
int main (void)
char * binaryPath = "/ bin / bash";
char * const args [] = binaryPath, "-c", "echo" Posjetite $ HOSTNAME: $ PORT
iz preglednika."", NULL;
char * const env [] = "HOSTNAME = www.linuxhint.com "," LUKA = 8080 ", NULL;
 
execve (binarni put, args, env);
 
return 0;

Kao što vidite, dobivamo isti izlaz kao u primjeru execle ().

Dakle, tako koristite obitelj exec funkcija u C za programiranje sustava u Linuxu. Hvala što ste pročitali ovaj članak.

Kako koristiti Xdotool za poticanje klikova i pritiska miša u Linuxu
Xdotool je besplatni alat za naredbene retke otvorenog koda za simulaciju klikova mišem i pritiska tipki. Ovaj će članak pokrivati ​​kratki vodič o ko...
Top 5 ergonomskih proizvoda za računalni miš za Linux
Uzrokuje li dugotrajno korištenje računala bolove u zapešću ili prstima? Patite li od ukočenih zglobova i stalno se morate rukovati? Osjećate li goruć...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...