C Programmēšana

Exec sistēmas izsaukums C

Exec sistēmas izsaukums C
Exec ģimenei ir daudz funkciju C. Šīs C funkcijas galvenokārt tiek izmantotas, lai palaistu sistēmas komandu atsevišķā procesā, kas nodrošina galveno programmu un izdrukā izvadi.

Šajā rakstā es runāšu par exec funkciju grupām un parādīšu, kā izmantot katru no šīm exec ģimenes funkcijām C. Tātad, sāksim darbu.

C sistēmas funkcijas Exec ģimenē:

Exec funkciju saimes ir definētas galvenē unistd.h. Tātad, jums ir jāizmanto šī galvene programmā C, kur vēlaties izmantot šīs funkcijas.

Zemāk ir norādītas pieejamās exec funkcijas kopā ar to parametriem:

Apskatīsim, ko dara katra no šīm funkcijām un kā tās izmantot.

execl () Sistēmas funkcija:

Programmā execl () sistēmas funkcija aizņem izpildāmā binārā faila ceļu (t.i.e. / bin / ls) kā pirmo un otro argumentu. Tad argumenti (t.i.e. -lh, /mājas), kuru vēlaties nodot izpildāmajam failam, kam seko NULL. Tad sistēmas funkcija execl () palaiž komandu un izdrukā izvadi. Ja rodas kāda kļūda, tad execl () atgriež -1. Pretējā gadījumā tas neko neatgriež.

Sintakse:

int execl (const char * ceļš, const char * arg,…, NULL);

Zemāk ir sniegts sistēmas funkcijas execl () piemērs:

# iekļaut
 
int main (void)
char * binaryPath = "/ bin / ls";
char * arg1 = "-lh";
char * arg2 = "/ mājas";
 
execl (binaryPath, binaryPath, arg1, arg2, NULL);
 
atgriešanās 0;

Es vadīju ls -lh / mājas komandu, izmantojot sistēmas funkciju execl (). Kā redzat, tiek parādīts pareizs rezultāts.

execlp () Sistēmas funkcija:

execl () neizmanto CELS vides mainīgais. Tātad, lai palaistu ar execl (), ir nepieciešams pilns izpildāmā faila ceļš. execlp () izmanto vides mainīgo PATH. Tātad, ja PATH ir pieejams izpildāms fails vai komanda, tad lai palaistu, pietiek ar komandu vai faila nosaukumu, pilns ceļš nav nepieciešams.

Sintakse:

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

Execl () piemēru mēs varam pārrakstīt, izmantojot sistēmas funkciju execlp () šādi:

# iekļaut
 
int main (void)
char * programName = "ls";
char * arg1 = "-lh";
char * arg2 = "/ mājas";
 
execlp (programmas nosaukums, programmas nosaukums, arg1, arg2, NULL);
 
atgriešanās 0;

Es izturēju tikai komandas nosaukumu ls, nevis pilnu ceļu / bin / ls. Kā redzat, es saņēmu tādu pašu izvadi kā iepriekš.

execv () Sistēmas funkcija:

Funkcijā execl () izpildāmā faila parametri tiek nodoti funkcijai kā dažādi argumenti. Izmantojot execv (), jūs varat nodot visus parametrus NULL izbeigtajā masīvā argv. Masīva pirmajam elementam jābūt izpildāmā faila ceļam. Pretējā gadījumā funkcija execv () darbojas tāpat kā execl () funkcija.

Sintakse:

int execv (const char * ceļš, char * const argv []);

Execl () piemēru mēs varam pārrakstīt šādi:

# iekļaut
 
int main (void)
char * binaryPath = "/ bin / ls";
char * args [] = binārāPath, "-lh", "/ home", NULL;
 
execv (binaryPath, args);
 
atgriešanās 0;

Kā redzat, es saņemu pareizu rezultātu.

execvp () Sistēmas funkcija:

Darbojas tāpat kā sistēmas execv () funkcija. Bet tiek izmantots vides mainīgais PATH. Tātad izpildāmā faila pilns ceļš nav nepieciešams tāpat kā execlp ().

Sintakse:

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

Execv () piemēru mēs varam pārrakstīt šādi:

# iekļaut
 
int main (void)
char * programName = "ls";
char * args [] = programmasNosaukums, "-lh", "/ mājas", NULL;
 
execvp (programmas nosaukums, args);
 
atgriešanās 0;

Kā redzat, tiek parādīta pareizā izeja.

execle () Sistēmas funkcija:

Darbojas tāpat kā execl (), bet kopā ar to varat norādīt arī savus vides mainīgos. Vides mainīgie tiek nodoti kā masīvs envp. Pēdējais envp masīvam jābūt NULL. Visos pārējos elementos atslēgas vērtību pāri ir kā virkne.

Sintakse:

int execle (const char * ceļš, const char * arg,…, NULL, char * const envp []);

Zemāk ir sniegts execle () sistēmas funkcijas piemērs:

# iekļaut
 
int main (void)
char * binaryPath = "/ bin / bash";
char * arg1 = "-c";
char * arg2 = "echo" Pārlūkprogrammā apmeklējiet vietni $ HOSTNAME: $ PORT."";
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execle (binaryPath, binaryPath, arg1, arg2, NULL, env);
 
atgriešanās 0;

Es izturēju divus vides mainīgos HOSTNAME un OSTA uz funkciju execle (). Kā redzat, es tiem varu piekļūt no izpildāmā faila / bin / bash.

execve () Sistēmas funkcija:

Tāpat kā execle (), jūs varat sniegt savus vides mainīgos kopā ar execve (). Varat arī nodot argumentus kā masīvus, kā jūs to darījāt execv ().

Sintakse:

int izpildīt (const char * fails, char * const argv [], char * const envp []);

Execle () piemēru var pārrakstīt šādi:

# iekļaut
 
int main (void)
char * binaryPath = "/ bin / bash";
char * const args [] = binaryPath, "-c", "echo" Apmeklējiet vietni $ HOSTNAME: $ PORT
no sava pārlūka."", NULL;
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
izpildīt (binaryPath, args, env);
 
atgriešanās 0;

Kā redzat, mēs iegūstam tādu pašu rezultātu kā execle () piemērā.

Tātad, tā jūs izmantojat exec funkciju saimi C, lai programmētu sistēmu Linux. Paldies, ka izlasījāt šo rakstu.

Izmantojot X-Mouse Button Control, atšķirīgi mainiet peles pogas atšķirīgai programmatūrai
Varbūt jums ir nepieciešams rīks, kas varētu mainīt peles vadību ar katru lietoto lietojumprogrammu. Ja tas tā ir, varat izmēģināt lietojumprogrammu a...
Microsoft Sculpt Touch bezvadu peles apskats
Es nesen lasīju par Microsoft Sculpt Touch bezvadu pele un nolēma to nopirkt. Pēc kāda laika izmantošanas es nolēmu dalīties savā pieredzē ar to. Šo b...
AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...