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:
- int execl (put const char *, const char * arg,…, NULL);
- int execlp (datoteka const char *, const char * arg,…, NULL);
- int execv (const char * put, char * const argv []);
- int execvp (datoteka const char *, char * const argv []);
- int execle (put const char *, const char * arg,…, NULL, char * const envp []);
- int execve (datoteka const char *, char * const argv [], char * const envp []);
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:
#includeint 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:
#includeint 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:
#includeint 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:
#includeint 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:
#includeint 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:
#includeint 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.