C Програмиране

Exec System Call в C

Exec System Call в C
Семейството exec има много функции в C. Тези C функции се използват основно за стартиране на системна команда в отделен процес, който основната програма и отпечатване на изхода.

В тази статия ще говоря за семейството функции на exec и ще ви покажа как да използвате всяка една от тези функции от семейството на exec в C. И така, нека започнем.

Системни функции в семейството Exec:

Семействата на exec функции са дефинирани в заглавката unistd.з. Така че, трябва да използвате този заглавие на програмата C, където искате да използвате тези функции.

Наличните exec функции заедно с техните функционални параметри са дадени по-долу:

Нека да видим какво прави всяка от тези функции и как да ги използваме.

execl () Системна функция:

В execl () системната функция поема по пътя на изпълнимия двоичен файл (т.е.д. / bin / ls) като първи и втори аргумент. След това аргументите (т.е.д. -lh, /У дома), който искате да предадете на изпълнимия файл, последван от НУЛА. След това системната функция execl () изпълнява командата и отпечатва изхода. Ако възникне някаква грешка, тогава execl () връща -1. В противен случай не връща нищо.

Синтаксис:

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

Пример за системната функция execl () е даден по-долу:

#include
 
int main (void)
char * binaryPath = "/ bin / ls";
char * arg1 = "-lh";
char * arg2 = "/ начало";
 
execl (binaryPath, binaryPath, arg1, arg2, NULL);
 
връщане 0;

Тичах ls -lh / начало команда, използваща системната функция execl (). Както можете да видите, се показва правилния резултат.

execlp () Системна функция:

execl () не използва ПЪТ променлива на средата. И така, пълният път на изпълнимия файл е необходим за стартирането му с execl (). execlp () използва променливата на средата PATH. Така че, ако в PATH има наличен изпълним файл или команда, тогава командата или името на файла са достатъчни, за да се стартира, пълният път не е необходим.

Синтаксис:

int execlp (файл const char *, const char * arg,…, NULL);

Можем да пренапишем примера execl (), като използваме системната функция execlp (), както следва:

#include
 
int main (void)
char * programName = "ls";
char * arg1 = "-lh";
char * arg2 = "/ начало";
 
execlp (programName, programName, arg1, arg2, NULL);
 
връщане 0;

Предадох само името на командата ls, не пълният път / bin / ls. Както можете да видите, получих същия резултат като преди.

execv () Системна функция:

Във функцията execl () параметрите на изпълнимия файл се предават на функцията като различни аргументи. С execv () можете да предавате всички параметри в NULL завършен масив argv. Първият елемент на масива трябва да бъде пътят на изпълнимия файл. В противен случай функцията execv () работи точно като функцията execl ().

Синтаксис:

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

Можем да пренапишем примера execl (), както следва:

#include
 
int main (void)
char * binaryPath = "/ bin / ls";
char * args [] = binaryPath, "-lh", "/ home", NULL;
 
execv (двоичен път, аргументи);
 
връщане 0;

Както можете да видите, получавам правилния изход.

execvp () Системна функция:

Работи по същия начин като системната функция execv (). Но се използва променливата на средата PATH. Така че, пълният път на изпълнимия файл не се изисква точно както в execlp ().

Синтаксис:

int execvp (файл const char *, char * const argv []);

Можем да пренапишем примера execv (), както следва:

#include
 
int main (void)
char * programName = "ls";
char * args [] = programName, "-lh", "/ home", NULL;
 
execvp (име на програма, аргументи);
 
връщане 0;

Както можете да видите, се показва правилния изход.

execle () Системна функция:

Работи точно като execl (), но можете да предоставите свои собствени променливи на околната среда заедно с него. Променливите на средата се предават като масив envp. Последният елемент на envp масивът трябва да е NULL. Всички останали елементи съдържат двойките ключ-стойност като низ.

Синтаксис:

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

Пример за системната функция execle () е даден по-долу:

#include
 
int main (void)
char * binaryPath = "/ bin / bash";
char * arg1 = "-c";
char * arg2 = "echo" Посетете $ HOSTNAME: $ PORT от вашия браузър."";
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execle (binaryPath, binaryPath, arg1, arg2, NULL, env);
 
връщане 0;

Предадох две променливи на средата HOSTNAME и ПРИСТАНИЩЕ към функцията execle (). Както можете да видите, мога да имам достъп до тях от изпълнимия файл / bin / bash.

execve () Системна функция:

Точно като execle (), можете да предоставите свои собствени променливи на околната среда заедно с execve (). Можете също така да предавате аргументи като масиви, както направихте в execv ().

Синтаксис:

int execve (файл const char *, char * const argv [], char * const envp []);

Примерът execle () може да бъде пренаписан, както следва:

#include
 
int main (void)
char * binaryPath = "/ bin / bash";
char * const args [] = binaryPath, "-c", "echo" Посетете $ HOSTNAME: $ PORT
от вашия браузър."", НУЛА;
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execve (binaryPath, args, env);
 
връщане 0;

Както можете да видите, получаваме същия изход, както в примера execle ().

И така, вие използвате семейството на функциите exec в C за системно програмиране в Linux. Благодаря, че прочетохте тази статия.

Инсталирайте най-новия Dolphin Emulator за Gamecube & Wii на Linux
Dolphin Emulator ви позволява да играете избраните от вас игри Gamecube & Wii на Linux Personal Computers (PC). Като безплатно достъпен и емулатор на...
Как да използвам GameConqueror Cheat Engine в Linux
Статията обхваща ръководство за използването на GameConqueror cheat engine в Linux. Много потребители, които играят игри под Windows, често използват ...
Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...