Ц Програмирање

Извршите системски позив у језику Ц

Извршите системски позив у језику Ц
Породица екец има много функција у Ц. Ове функције Ц се у основи користе за покретање системске наредбе у одвојеном процесу који главни програм и испис резултата.

У овом чланку ћу говорити о породици функција екец и показати вам како да користите сваку од ових функција породице екец у језику Ц. Па, кренимо.

Функције система Ц у породици Екец:

Породице функција екец дефинисане су у заглављу унистд.х. Дакле, морате користити ово заглавље на програму Ц где желите да користите ове функције.

Доступне извршне функције заједно са њиховим функцијским параметрима дате су у наставку:

Погледајмо шта свака од ових функција ради и како их користити.

екецл () Системска функција:

У екецл () системска функција креће путем извршне бинарне датотеке (тј.е. / бин / лс) као први и други аргумент. Затим, аргументи (тј.е. -лх, /кућа) који желите да пребаците у извршну датотеку, а затим НУЛА. Тада системска функција екецл () покреће наредбу и исписује излаз. Ако се догоди било каква грешка, тада екецл () враћа -1. У супротном, ништа не враћа.

Синтакса:

инт екецл (пут цонст цхар *, цонст цхар * арг,…, НУЛЛ);

Пример функције система екецл () дат је у наставку:

#инцлуде
 
инт маин (воид)
цхар * бинариПатх = "/ бин / лс";
цхар * арг1 = "-лх";
цхар * арг2 = "/ дом";
 
екецл (бинариПатх, бинариПатх, арг1, арг2, НУЛЛ);
 
ретурн 0;

Водио сам лс -лх / дом наредба помоћу функције система екецл (). Као што видите, приказује се тачан резултат.

екецлп () Системска функција:

екецл () не користи ПУТ променљива околине. Дакле, пуна путања извршне датотеке је потребна да би се покренула са екецл (). екецлп () користи променљиву окружења ПАТХ. Дакле, ако је извршна датотека или команда доступна у ПАТХ-у, тада је наредба или име датотеке довољна за њено покретање, пуна путања није потребна.

Синтакса:

инт екецлп (датотека цонст цхар *, цонст цхар * арг,…, НУЛЛ);

Пример екецл () можемо да препишемо помоћу системске функције екецлп () на следећи начин:

#инцлуде
 
инт маин (воид)
цхар * програмНаме = "лс";
цхар * арг1 = "-лх";
цхар * арг2 = "/ дом";
 
екецлп (програмНаме, програмНаме, арг1, арг2, НУЛЛ);
 
ретурн 0;

Пропустио сам само име наредбе лс, не пуни пут / бин / лс. Као што видите, добио сам исти излаз као и раније.

екецв () системска функција:

У функцији екецл (), параметри извршне датотеке се преносе функцији као различити аргументи. Помоћу екецв () можете проследити све параметре у НУЛЛ завршеном низу аргв. Први елемент низа треба да буде стаза извршне датотеке. У супротном, функција екецв () ради исто као и функција екецл ().

Синтакса:

инт екецв (цонст цхар * путања, цхар * цонст аргв []);

Пример екецл () можемо преписати на следећи начин:

#инцлуде
 
инт маин (воид)
цхар * бинариПатх = "/ бин / лс";
цхар * аргс [] = бинариПатх, "-лх", "/ хоме", НУЛЛ;
 
екецв (бинариПатх, аргс);
 
ретурн 0;

Као што видите, добијам тачан резултат.

екецвп () Системска функција:

Ради на исти начин као и системска функција екецв (). Али, користи се променљива окружења ПАТХ. Дакле, пуна путања извршне датотеке није потребна баш као у екецлп ().

Синтакса:

инт екецвп (датотека цонст цхар *, цхар * цонст аргв []);

Пример екецв () можемо преписати на следећи начин:

#инцлуде
 
инт маин (воид)
цхар * програмНаме = "лс";
цхар * аргс [] = ИмеНаме, "-лх", "/ хоме", НУЛЛ;
 
екецвп (програмНаме, аргс);
 
ретурн 0;

Као што видите, приказује се тачан излаз.

екецле () Системска функција:

Ради исто као екецл (), али уз њега можете обезбедити и сопствене променљиве окружења. Варијабле окружења се преносе као низ енвп. Последњи елемент енвп низ би требао бити НУЛЛ. Сви остали елементи садрже парове кључ / вредност као низ.

Синтакса:

инт екецле (цонст цхар * патх, цонст цхар * арг,…, НУЛЛ, цхар * цонст енвп []);

Пример функције система екецле () дат је у наставку:

#инцлуде
 
инт маин (воид)
цхар * бинариПатх = "/ бин / басх";
цхар * арг1 = "-ц";
цхар * арг2 = "ецхо" Посетите $ ХОСТНАМЕ: $ ПОРТ из свог прегледача."";
цхар * цонст енв [] = "ХОСТНАМЕ = ввв.линукхинт.цом "," ЛУКА = 8080 ", НУЛЛ;
 
екецле (бинариПатх, бинариПатх, арг1, арг2, НУЛЛ, енв);
 
ретурн 0;

Прошао сам две променљиве окружења ХОСТНАМЕ и ЛУКА на функцију екецле (). Као што видите, могу им приступити из извршне датотеке / бин / басх.

екецве () Системска функција:

Баш као и екецле (), можете пружити и своје променљиве окружења заједно са екецве (). Такође можете проследити аргументе као низове као што сте то учинили у екецв ().

Синтакса:

инт екецве (датотека цонст цхар *, цхар * цонст аргв [], цхар * цонст енвп []);

Пример екецле () може се преписати на следећи начин:

#инцлуде
 
инт маин (воид)
цхар * бинариПатх = "/ бин / басх";
цхар * цонст аргс [] = бинариПатх, "-ц", "ецхо" Посетите $ ХОСТНАМЕ: $ ПОРТ
из прегледача."", НУЛА;
цхар * цонст енв [] = "ХОСТНАМЕ = ввв.линукхинт.цом "," ЛУКА = 8080 ", НУЛЛ;
 
екецве (бинариПатх, аргс, енв);
 
ретурн 0;

Као што видите, добијамо исти излаз као у примеру екецле ().

Дакле, тако користите породицу функција екец у Ц за системско програмирање у Линуку. Хвала што сте прочитали овај чланак.

Најбољи Линук Дистрос за игре у 2021
Линук оперативни систем далеко је превалио свој изворни, једноставни изглед заснован на серверима. Овај ОС се изузетно побољшао последњих година и сад...
Како снимити и стримовати своју играћу сесију на Линук-у
У прошлости се играње игара сматрало само хобијем, али с временом је играчка индустрија забележила огроман раст у погледу технологије и броја играча. ...
Најбоље игре за ручно праћење
Оцулус Куест је недавно представио сјајну идеју ручног праћења без контролера. Са све већим бројем игара и активности које извршавају подршку формално...