Кодирање помоћу форка и екец -а примером у ц

Coding With Fork Exec Example C



Наслов нашег чланка садржи две различите функције језика Ц које се појављују током покретања било ког програма у нашем систему. Нажалост, не постоји могућност истовременог појављивања више програма у Ц. Само један задатак се може догодити у одређено време, што значи да не дозвољава покретање истовремених програма. То узрокује да чекате завршетак једног процеса да бисте извршили други. Да бисте избегли овај проблем у решавању проблема, можда ћете морати да развијете свој програм на добар начин, будући да сте добар програмер. Линук форк () се користи за превазилажење чекања и омогућавање истовремености у вашем систему. Помаже при дуплицирању новог процеса и ствара нови позивањем дуплицираног процеса. Нови процес је подређени процес, а претходни се назива родитељским процесом.

Док се функција екец () користи за промену тренутног постојећег програма са новим. Ова замена се врши изменама садржаја програма или датотеке. Дакле, разлика између форк -а и екец -а је у томе што форк ствара нови процес од постојећег процеса, а екец се користи за замену постојећег програма стварањем новог.





Предуслови

Да бисмо извршили било који ц програм на вашем Линук систему, морамо на њега инсталирати неке предуслове. Идите на терминал помоћу методе пречице Цтрл+Алт+Т. Сада напишите следеће команде за инсталирање ман страница.



$судопогоданинсталирајманпагес-дев



Инсталираће све одговарајуће странице.





Да бисте напредовали, да бисте покренули програм на Линук -у, морате инсталирати компајлер кода. То се користи за компајлирање кода и његово извршавање. У ту сврху ћемо инсталирати ГЦЦ спремишта у наш систем.

$судопогоданинсталирајГЦЦ



Кодирање са екец -ом у ц

Пошто смо инсталирали странице за руковање у Линук, користићемо следећу команду да бисмо видели опис екец -а. Примарна синтакса узорка је следећа:

Синтакса

Екец(патхнаме/филе, аргв);

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

$човече екец

Сада на горе цитираној слици можете посматрати врсте екец. Ово је породица функција екец. Сваки је за другу функцију која прати исту базу, екец.

Пример: Сада ћемо даље, описаћемо функционалност екец -а помоћу примера. Узећемо једну функцију екец -а да демонстрирамо његов рад, а то је екецв. Прво ћемо креирати две датотеке са наставком .ц. Након њиховог креирања, у њих ћемо уписати одговарајуће кодове и извршити их да бисмо видели резултат.

Узмите у обзир назив датотеке сампле4.ц. Отворите га и користите следећи код. У овом коду смо користили екецв на посебан начин који је доле наведен.

Екецв(./сампле4цопи, аргс);

Први део садржи нову путању директоријума, а други део приказује низ аргумената као параметар који смо проследили.

Узорак4.ц

Пре свега, одштампали смо ИД тренутног процеса. Друго, створили смо низ знакова који на крају има НУЛЛ за завршетак. Треће, позвали смо функцију сампле4цопи.

Сампле4цопи.ц

Када позовемо екец функцију (), слика процеса се мења. Испод цитиране слике испод приказан је код сампле4цопи.ц.

Овде смо користили само исписане изјаве да бисмо добили ИД тренутног процеса.

Излаз одговарајућих кодова може се добити помоћу следећих наредби.

$ ГЦЦ – о узорак4 узорак4.ц
$ ГЦЦ –о сампле4цопи сампле4цопи.ц
$./сампле4

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

Према слици, ПИД датотеке сампле4.ц се прво приказује онако како је декларисан пре екец позива. Затим се након позивања функције екец () извршавају оба исписа исписа датотеке сампле4цопи.ц где се гетпид () користи за добијање ИД -а процеса.

Кодирање виљушком у ц

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

Синтакса:

Пид_т виљушка(празнина);

За помоћ у употреби можемо користити ман страницу

$човечевиљушка

Пример: Сада размотрите пример стварањем датотеке сампле3.ц. Унећемо код унутар датотеке. Према коду, статус виљушке смо поставили као форкранк.

Узорак3.ц

За примену услова користили смо наредбу иф-елсе. Овде су декларисане једноставне команде за штампање које помажу у разумевању концепта форк (). Форкранк се прво декларише као 0, а затим -1. Са форк (), сада постоје два процеса која раде истовремено. Излаз се може добити коришћењем истог кода, који је коришћен горе у примеру екец.

$ ГЦЦ –о узорак3.ц
$./сампле3

Излаз показује да се подређени процес извршава раније од родитеља када је родитељски процес чекао. Функција чекања имплицира да узрокује да родитељска функција чека ако се не заврши један од свих подређених процеса.

Форк и Екец системски позиви колективно

Овде ћемо узети две датотеке под називом сампле1.ц и сампле2.ц. Прво отворите датотеку сампл1.ц и упишите код који је додан испод на слици. Овде смо користили системски позив форк (); када је подређени процес креиран, п ће бити додељено 0. Док користите екец системски позив, сампле1.ц ће бити замењен са сампле2.ц.

Сампле1.ц

Сампле2.ц

Слично горе наведеним примерима, датотека сампле2 ће садржати испис принтф у њој. У узорку1.ц прво се извршава прва наредба исписа, затим се позива функција форк, када је п == 0, тада се извршава подређени дио и покреће се датотека узорка2.ц. Излаз ће садржати ГЦЦ за компајлирање обе датотеке. Овде се родитељ сампле1.ц ид и сампле2.ц ид разликују јер су родитељ и дете.

Закључак

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