Šiame straipsnyje aš kalbėsiu apie „exec“ funkcijų šeimą ir parodysiu, kaip naudoti kiekvieną iš šių „exec“ šeimos funkcijų C. Taigi, pradėkime.
C sistemos funkcijos „Exec“ šeimoje:
„Exec“ funkcijų šeimos yra apibrėžtos antraštėje unistd.h. Taigi, jūs turite naudoti šią antraštę C programoje, kur norite naudoti šias funkcijas.
Galimos „exec“ funkcijos kartu su jų parametrais pateikiamos žemiau:
- int execl (const char * kelias, const char * arg,…, NULL);
- int execlp (const char * byla, const char * arg,…, NULL);
- int execv (const char * kelias, char * const argv []);
- int execvp (const char * failas, char * const argv []);
- int execle (const char * kelias, const char * arg,…, NULL, char * const envp []);
- int vykdyti (const char * failas, char * const argv [], char * const envp []);
Pažiūrėkime, ką daro kiekviena iš šių funkcijų ir kaip jomis naudotis.
execl () sistemos funkcija:
Programoje execl () sistemos funkcija eina vykdomojo dvejetainio failo kelią (t.e. / bin / ls) kaip pirmą ir antrą argumentą. Tada argumentai (t.e. -lh, /namai), kurį norite perduoti vykdomajam failui ir po jo NULL. Tada sistemos funkcija „execl ()“ paleidžia komandą ir išspausdina išvestį. Jei įvyksta kokių nors klaidų, „execl“) grąžina -1. Priešingu atveju jis nieko negrąžina.
Sintaksė:
int execl (const char * kelias, const char * arg,…, NULL);Žemiau pateikiamas sistemos funkcijos „execl ()“ pavyzdys:
# įtrauktiint main (negaliojantis)
char * binaryPath = "/ bin / ls";
char * arg1 = "-lh";
char * arg2 = "/ namai";
execl (binaryPath, binaryPath, arg1, arg2, NULL);
grąžinti 0;
Aš paleidau ls-l / namai komandą naudojant sistemos funkciją execl (). Kaip matote, rodomas teisingas rezultatas.
execlp () sistemos funkcija:
„execl“) nenaudoja KELIS aplinkos kintamasis. Taigi, norint paleisti jį su „execl (“), reikalingas visas vykdomojo failo kelias. execlp () naudoja PATH aplinkos kintamąjį. Taigi, jei PATH yra vykdomasis failas ar komanda, tada norint paleisti pakanka komandos arba failo pavadinimo, viso kelio nereikia.
Sintaksė:
int execlp (const char * byla, const char * arg,…, NULL);Execl () pavyzdį galime perrašyti naudodamiesi sistemos funkcija execlp () taip:
# įtrauktiint main (negaliojantis)
char * programName = "ls";
char * arg1 = "-lh";
char * arg2 = "/ namai";
execlp (programos pavadinimas, programos pavadinimas, arg1, arg2, NULL);
grąžinti 0;
Aš perėjau tik komandos pavadinimą ls, ne visas kelias / bin / ls. Kaip matote, gavau tą patį išėjimą kaip ir anksčiau.
execv () sistemos funkcija:
Funkcijoje execl () vykdomojo failo parametrai perduodami funkcijai kaip skirtingi argumentai. Naudodami „execv“), galite perduoti visus parametrus NULL nutraukiamoje masyvo dalyje argv. Pirmasis masyvo elementas turėtų būti vykdomojo failo kelias. Kitu atveju funkcija „execv ()“ veikia kaip ir „execl“).
Sintaksė:
int execv (const char * kelias, char * const argv []);Execl () pavyzdį galime perrašyti taip:
# įtrauktiint main (negaliojantis)
char * binaryPath = "/ bin / ls";
char * args [] = dvejetainis kelias, "-lh", "/ namai", NULL;
execv (binaryPath, args);
grąžinti 0;
Kaip matote, gaunu teisingą išvestį.
execvp () sistemos funkcija:
Veikia taip pat, kaip sistemos „execv“) funkcija. Tačiau naudojamas PATH aplinkos kintamasis. Taigi, viso vykdomojo failo kelio nereikia, kaip ir execlp ().
Sintaksė:
int execvp (const char * failas, char * const argv []);Execv () pavyzdį galime perrašyti taip:
# įtrauktiint main (negaliojantis)
char * programName = "ls";
char * args [] = programosPavadinimas, "-lh", "/ namai", NULL;
execvp (programos pavadinimas, argumentai);
grąžinti 0;
Kaip matote, rodoma teisinga išvestis.
„execle“) sistemos funkcija:
Veikia kaip ir „execl“), tačiau kartu su juo galite pateikti ir savo aplinkos kintamuosius. Aplinkos kintamieji perduodami kaip masyvas envp. Paskutinis elementas envp masyvas turėtų būti NULL. Visuose kituose elementuose raktų ir verčių poros yra eilutės.
Sintaksė:
int execle (const char * kelias, const char * arg,…, NULL, char * const envp []);Žemiau pateikiamas sistemos „execle ()“ pavyzdys:
# įtrauktiint main (negaliojantis)
char * binaryPath = "/ bin / bash";
char * arg1 = "-c";
char * arg2 = "echo" Naršyklėje apsilankykite „$ HOSTNAME: $ PORT“.„“;
char * const env [] = "HOSTNAME = www.linuxhint.com "," Uostas = 8080 ", NULL;
execle (binaryPath, binaryPath, arg1, arg2, NULL, env);
grąžinti 0;
Aš išlaikiau du aplinkos kintamuosius HOSTNAME ir Uostas į „execle“) funkciją. Kaip matote, aš galiu juos pasiekti iš vykdomojo failo / bin / bash.
Execve () Sistemos funkcija:
Kaip ir „execle“ (), taip pat galite pateikti savo aplinkos kintamuosius kartu su „execve“). Taip pat galite perduoti argumentus kaip masyvus, kaip tai darėte execv ().
Sintaksė:
int vykdyti (const char * failas, char * const argv [], char * const envp []);„Execle“ () pavyzdį galima perrašyti taip:
# įtrauktiint main (negaliojantis)
char * binaryPath = "/ bin / bash";
char * const args [] = binaryPath, "-c", "echo" Aplankykite $ HOSTNAME: $ PORT
iš savo naršyklės."", NULL;
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
vykdyti (binaryPath, args, env);
grąžinti 0;
Kaip matote, gauname tą pačią išvestį kaip ir pavyzdyje „execle“).
Taigi, taip naudojate „exec“ funkcijų šeimą C sistemoje programuodami „Linux“. Dėkojame, kad perskaitėte šį straipsnį.