C Programmeerimine

Süsteemi kõne täitmine C-s

Süsteemi kõne täitmine C-s
Execi perekonnal on C-s palju funktsioone. Neid C-funktsioone kasutatakse põhimõtteliselt süsteemi käsu käivitamiseks eraldi protsessis, mis põhiprogramm ja väljundi printimine.

Selles artiklis räägin Exec-funktsioonide perekonnast ja näitan teile, kuidas kasutada kõiki neid Exec-perekonna funktsioone C-s. Alustame siis.

C-süsteemi funktsioonid Execi peres:

Exec-funktsioonide perekonnad on määratletud päises unistd.h. Niisiis, peate kasutama seda päist programmis C, kus soovite neid funktsioone kasutada.

Saadaval olevad exec-funktsioonid koos nende funktsiooniparameetritega on toodud allpool:

Vaatame, mida kõik need funktsioonid teevad ja kuidas neid kasutada.

execl () Süsteemi funktsioon:

Rakenduses execl () võtab süsteemifunktsioon käivitatava binaarfaili tee (st.e. / bin / ls) esimese ja teise argumendina. Seejärel esitatakse argumendid (s.t.e. -lh, /Kodu), mille soovite anda käivitatavale failile, millele järgneb NULL. Seejärel käivitab süsteemi funktsioon execl () käsu ja prindib väljundi. Vea ilmnemisel tagastab execl () -1. Vastasel juhul ei tagasta see midagi.

Süntaks:

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

Süsteemi funktsiooni execl () näide on toodud allpool:

# kaasata
 
int main (tühine)
char * binaryPath = "/ bin / ls";
char * arg1 = "-lh";
char * arg2 = "/ kodu";
 
execl (binaryPath, binaryPath, arg1, arg2, NULL);
 
tagastama 0;

Ma jooksin ls -lh / kodu käsk, kasutades süsteemi funktsiooni execl (). Nagu näete, kuvatakse õige tulemus.

execlp () Süsteemi funktsioon:

execl () ei kasuta faili TEE keskkonnamuutuja. Niisiis, käivitatava faili execl () käivitamiseks on vajalik käivitatava faili täielik tee. execlp () kasutab keskkonnamuutujat PATH. Niisiis, kui PATH-is on saadaval käivitatav fail või käsk, siis käsk või failinimi on selle käivitamiseks piisavad, kogu tee pole vajalik.

Süntaks:

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

Näite execl () võime süsteemi funktsiooni execlp () abil ümber kirjutada järgmiselt:

# kaasata
 
int main (tühine)
char * programmiNimi = "ls";
char * arg1 = "-lh";
char * arg2 = "/ kodu";
 
execlp (programmiNimi, programmiNimi, arg1, arg2, NULL);
 
tagastama 0;

Läbisin ainult käsu nime ls, mitte kogu tee / bin / ls. Nagu näete, sain sama väljundi nagu varem.

execv () süsteemi funktsioon:

Funktsioonis execl () edastatakse käivitatava faili parameetrid funktsioonile erinevate argumentidena. Rakendusega execv () saate kõik parameetrid edastada NULL-lõpetatud massiivis argv. Massiivi esimene element peaks olema käivitatava faili tee. Muidu töötab funktsioon execv () täpselt nagu funktsioon execl ().

Süntaks:

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

Execl () näite võime ümber kirjutada järgmiselt:

# kaasata
 
int main (tühine)
char * binaryPath = "/ bin / ls";
char * args [] = binaarne tee, "-lh", "/ kodu", NULL;
 
execv (binaryPath, args);
 
tagastama 0;

Nagu näete, saan õige väljundi.

execvp () süsteemi funktsioon:

Töötab samamoodi nagu süsteemi funktsioon execv (). Kuid kasutatakse keskkonnamuutujat PATH. Seega pole täidetava faili kogu tee vajalik just nagu execlp ().

Süntaks:

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

Execv () näite saame ümber kirjutada järgmiselt:

# kaasata
 
int main (tühine)
char * programmiNimi = "ls";
char * args [] = programmiNimi, "-lh", "/ kodu", NULL;
 
execvp (programmiNimi, args);
 
tagastama 0;

Nagu näete, kuvatakse õige väljund.

execle () süsteemi funktsioon:

Töötab täpselt nagu execl (), kuid saate koos sellega esitada ka oma keskkonnamuutujad. Keskkonnamuutujad edastatakse massiivina envp. Viimane element envp massiiv peaks olema NULL. Kõik muud elemendid sisaldavad võtmeväärtuste paare stringidena.

Süntaks:

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

Execle () süsteemi funktsiooni näide on toodud allpool:

# kaasata
 
int main (tühine)
char * binaryPath = "/ bin / bash";
char * arg1 = "-c";
char * arg2 = "echo" Külastage oma brauseris lehte $ HOSTNAME: $ PORT."";
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execle (binaryPath, binaryPath, arg1, arg2, NULL, env);
 
tagastama 0;

Edastasin kaks keskkonnamuutujat HOSTNAME ja SADAM funktsioonile execle (). Nagu näete, pääsen neile juurde käivitatava faili kaudu / bin / bash.

execve () süsteemi funktsioon:

Nii nagu execle (), saate ka execve () abil anda oma keskkonnamuutujad. Samuti saate argumente edastada massiividena nagu execv () -s.

Süntaks:

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

Execle () näite saab kirjutada järgmiselt:

# kaasata
 
int main (tühine)
char * binaryPath = "/ bin / bash";
char * const args [] = binaryPath, "-c", "echo" Külastage veebisaiti $ HOSTNAME: $ PORT
brauserist."", NULL;
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execve (binaryPath, args, env);
 
tagastama 0;

Nagu näete, saame sama väljundi nagu näites execle ().

Nii kasutate Linuxis süsteemide programmeerimiseks C-s olevat funktsiooni exec. Täname selle artikli lugemise eest.

Kuidas muuta hiire ja puuteplaatide kerimise suund Windows 10-s ümber
Hiir ja PuuteplaatNeed muudavad arvutamise mitte ainult lihtsaks, vaid ka tõhusamaks ja vähem aeganõudvaks. Me ei kujuta ette elu ilma nende seadmetet...
Kuidas muuta hiirekursori ja kursori suurust, värvi ja skeemi Windows 10-s
Windows 10 hiirekursor ja kursor on operatsioonisüsteemi väga olulised aspektid. Seda võib öelda ka teiste opsüsteemide kohta, nii et tegelikult pole ...
Tasuta ja avatud lähtekoodiga mängumootorid Linuxi mängude arendamiseks
See artikkel hõlmab loetelu tasuta ja avatud lähtekoodiga mängumootoritest, mida saab kasutada 2D- ja 3D-mängude arendamiseks Linuxis. Selliseid mängu...