Programare C

Apel sistem Exec în C

Apel sistem Exec în C
Familia exec are multe funcții în C. Aceste funcții C sunt utilizate în principiu pentru a rula o comandă de sistem într-un proces separat pe care programul principal și pentru a imprima ieșirea.

În acest articol, voi vorbi despre familia de funcții exec și vă voi arăta cum să utilizați fiecare dintre aceste funcții de familie exec în C. Asadar, haideti sa începem.

Funcțiile sistemului C din familia Exec:

Familiile de funcții exec sunt definite în antet unistd.h. Deci, trebuie să utilizați acest antet pe programul C unde doriți să utilizați aceste funcții.

Funcțiile exec disponibile împreună cu parametrii lor de funcție sunt date mai jos:

Să vedem ce fac fiecare dintre aceste funcții și cum să le folosim.

execl () Funcția sistemului:

În funcția de sistem execl () ia calea fișierului binar executabil (i.e. / bin / ls) ca primul și al doilea argument. Apoi, argumentele (i.e. -lh, /Acasă) pe care doriți să îl treceți la executabil urmat de NUL. Apoi funcția de sistem execl () execută comanda și imprimă ieșirea. Dacă apare orice eroare, atunci execl () returnează -1. În caz contrar, nu returnează nimic.

Sintaxă:

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

Un exemplu al funcției de sistem execl () este dat mai jos:

#include
 
int main (nul)
char * binaryPath = "/ bin / ls";
char * arg1 = "-lh";
char * arg2 = "/ home";
 
execl (binaryPath, binaryPath, arg1, arg2, NULL);
 
retur 0;

Am condus ls -lh / acasă comandă folosind funcția de sistem execl (). După cum puteți vedea, este afișat rezultatul corect.

execlp () Funcția sistemului:

execl () nu folosește CALE variabilă de mediu. Deci, calea completă a fișierului executabil este necesară pentru al rula cu execl (). execlp () utilizează variabila de mediu PATH. Deci, dacă un fișier executabil sau o comandă este disponibilă în PATH, atunci comanda sau numele fișierului sunt suficiente pentru al rula, calea completă nu este necesară.

Sintaxă:

int execlp (const char * file, const char * arg, ..., NULL);

Putem rescrie exemplul execl () folosind funcția de sistem execlp () după cum urmează:

#include
 
int main (nul)
char * programName = "ls";
char * arg1 = "-lh";
char * arg2 = "/ home";
 
execlp (programName, programName, arg1, arg2, NULL);
 
retur 0;

Am trecut doar numele comenzii eu sunt, nu calea completă / bin / ls. După cum puteți vedea, am obținut același rezultat ca înainte.

execv () Funcția sistemului:

În funcția execl (), parametrii fișierului executabil sunt transferați funcției ca argumente diferite. Cu execv (), puteți trece toți parametrii într-o matrice terminată NULL argv. Primul element al matricei ar trebui să fie calea fișierului executabil. În caz contrar, funcția execv () funcționează la fel ca funcția execl ().

Sintaxă:

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

Putem rescrie exemplul execl () după cum urmează:

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

După cum puteți vedea, obțin rezultatul corect.

execvp () Funcția sistemului:

Funcționează la fel ca funcția de sistem execv (). Dar se utilizează variabila de mediu PATH. Deci, calea completă a fișierului executabil nu este necesară la fel ca în execlp ().

Sintaxă:

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

Putem rescrie exemplul execv () după cum urmează:

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

După cum puteți vedea, este afișat rezultatul corect.

execle () Funcția sistemului:

Funcționează la fel ca execl (), dar puteți furniza propriile variabile de mediu împreună cu acesta. Variabilele de mediu sunt transmise ca o matrice invp. Ultimul element al invp matricea ar trebui să fie NULL. Toate celelalte elemente conțin perechile cheie-valoare ca șir.

Sintaxă:

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

Un exemplu al funcției de sistem execle () este dat mai jos:

#include
 
int main (nul)
char * binaryPath = "/ bin / bash";
char * arg1 = "-c";
char * arg2 = "echo" Accesați $ HOSTNAME: $ PORT din browserul dvs."";
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execle (binaryPath, binaryPath, arg1, arg2, NULL, env);
 
retur 0;

Am trecut două variabile de mediu NOMUL DE GĂȘTEȘTE și PORT la funcția execle (). După cum puteți vedea, le pot accesa din executabil / bin / bash.

execve () Funcția sistemului:

La fel ca execle () puteți furniza propriile variabile de mediu împreună cu execve (). Puteți, de asemenea, să transmiteți argumente la fel de matrici ca și în execv ().

Sintaxă:

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

Exemplul execle () poate fi rescris după cum urmează:

#include
 
int main (nul)
char * binaryPath = "/ bin / bash";
char * const args [] = binaryPath, "-c", "echo" Vizitați $ HOSTNAME: $ PORT
din browserul dvs."", NUL;
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execve (binaryPath, args, env);
 
retur 0;

După cum puteți vedea, obținem aceeași ieșire ca în exemplul execle ().

Deci, așa utilizați familia de funcții exec în C pentru programarea sistemului în Linux. Vă mulțumim că ați citit acest articol.

How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...
Motoare de jocuri gratuite și open source pentru dezvoltarea jocurilor Linux
Acest articol va acoperi o listă de motoare de jocuri gratuite și open source care pot fi utilizate pentru dezvoltarea jocurilor 2D și 3D pe Linux. Ex...