C Programovanie

Kódovanie vidličkou a exec príkladom v c

Kódovanie vidličkou a exec príkladom v c
Názov nášho článku obsahuje dve rôzne funkcie jazyka C, ktoré sa vyskytujú pri spustení ľubovoľného programu v našom systéme. V C je bohužiaľ nulová možnosť, že sa naraz vyskytne viac ako jeden program. V konkrétnom čase sa môže stať iba jedna úloha, čo znamená, že neumožňuje spustenie súbežných programov. Spôsobí to, že budete čakať na dokončenie jedného procesu, aby ste mohli vykonať ten druhý. Aby ste sa vyhli týmto problémom s odstraňovaním problémov, bude pravdepodobne potrebné, aby ste svoj program vyvíjali dobre, aby ste boli dobrým vývojárom. Linux fork () sa používa na prekonanie čakania a na umožnenie súbežnosti vo vašom systéme. Pomáha pri duplikovaní nového procesu a vytvorí nový volaním duplikovaného procesu. Nový proces je podradený proces a predchádzajúci sa nazýva nadradený proces.

Zatiaľ čo funkcia exec () sa používa na zmenu súčasného existujúceho programu za nový. Táto výmena sa vykonáva vykonaním dodatkov k obsahu programu alebo súboru. Rozdiel medzi vidlicou a vykonaním teda spočíva v tom, že vidlica vytvára nový proces z existujúceho procesu a vykon sa používa na nahradenie existujúceho programu vytvorením nového.

Predpoklady

Ak chcete vo vašom systéme Linux spustiť akýkoľvek program c, musíme doň nainštalovať určité predpoklady. Prejdite na terminál pomocou skratkovej metódy Ctrl + Alt + T. Teraz napíšte nasledujúce príkazy na inštaláciu manuálových stránok.

$ sudo apt install manpages-dev

Nainštalujú sa všetky príslušné stránky.

Ak chcete v budúcnosti spustiť program na systéme Linux, musíte si nainštalovať kompilátor kódov. Používa sa na zostavenie kódu a jeho vykonanie. Za týmto účelom nainštalujeme do nášho systému úložiská GCC.

$ sudo apt nainštalovať GCC

Kódovanie s exec v c

Pretože sme nainštalovali man stránky v systéme Linux, pomocou nasledujúceho príkazu zobrazíme popis týkajúci sa exec. Primárna vzorová syntax je nasledovná:

Syntax

Exec (cesta / subor, argv);

Tu sme použili „unistd.Hlavička h “, pretože obsahuje všetky informácie o rodinách funkcií exec.

$ muž vykon

Teraz na vyššie citovanom obrázku môžete pozorovať typy vykon. Toto je rodina funkcií exec. Každý z nich slúži na inú funkciu sledujúcu rovnaký základ, „exec.“

Príklad: Teraz, keď sa posunieme ďalej, popíšeme funkčnosť exec pomocou príkladu. Vezmeme si jednu funkciu exec na demonštráciu jej fungovania, ktorá je „execv.„Najskôr vytvoríme dva súbory s príponou„.c.„Po ich vytvorení do nich napíšeme príslušné kódy a vykonáme ich, aby sme videli výsledok.

Zvážte názov súboru „sample4.c ”. Otvorte ho a použite nasledujúci kód. V tomto kóde sme použili execv konkrétnym spôsobom uvedeným nižšie.

Execv („./ sample4copy “, args);

Prvá časť obsahuje novú cestu k adresáru a druhá časť zobrazuje pole argumentov ako parameter, ktorý sme odovzdali.

Ukážka4.c

Najskôr sme vytlačili ID súčasného procesu. Po druhé, vytvorili sme pole znakov, ktoré má na konci hodnotu NULL. Po tretie, nazvali sme funkciu sample4copy.

Sample4copy.c

Keď zavoláme funkciu exec (), obraz procesu sa zmení. Nižšie uvedený citovaný obrázok zobrazuje kód sample4copy.c.

Tu sme na získanie ID aktuálneho procesu použili iba tlačové príkazy.

Výstup príslušných kódov je možné získať pomocou nasledujúcich príkazov.

$ GCC-o sample4 sample4.c
$ GCC -o sample4copy sample4copy.c
$ ./ vzorka4

Ako sme už opísali, na zostavenie kódu sa používa slovo „GCC“ a po kompilácii sa kód úspešne vykoná.

Podľa obrázku je PID vzorky4.c súbor je zobrazený ako prvý, tak ako bol deklarovaný pred volaním exec. Potom po vyvolaní funkcie exec () sa obidve tlačové príkazy súboru sample4copy.c sa vykoná tam, kde sa getpid () používa na získanie ID procesu.

Kódovanie vidličkou v c

Funkcia fork () vytvorí podradený proces z nadradeného procesu. Obsahuje tiež dve hlavičky vrátane informácií o nich.

Syntax:

Vidlica Pid_t (neplatná);

Na pomoc pri používaní môžeme použiť manuálovú stránku

$ vidlica muža

Príklad: Teraz zvážte príklad vytvorením súboru „sample3.c ”. Zadáme kód do súboru. Podľa kódu sme nastavili stav vidlice ako forkrank.

Ukážka3.c

Na uplatnenie podmienky sme použili vyhlásenie „keby-ešte“. Tu sú deklarované jednoduché tlačové príkazy, ktoré uľahčujú pochopenie konceptu fork (). Forkrank je najskôr deklarovaný ako 0 a potom -1. S fork () teraz existujú dva procesy, ktoré fungujú súčasne. Výstup je možné získať použitím rovnakého kódu, aký sa používa vyššie v príklade exec.

$ GCC -o vzorka3.c
$./ vzorka3

Výstup ukazuje, že podradený proces sa vykoná skôr ako nadradený, keď nadradený proces čakal. Funkcia wait znamená, že spôsobí, že nadradená funkcia bude čakať, pokiaľ nebude ukončený jeden zo všetkých podradených procesov.

Systém Fork and Exec volá hromadne

Tu vezmeme dva súbory s názvom „sample1.c “a„ ukážka2.c ”. Najskôr otvorte súbor sampl1.c a napíš kód, ktorý je pripojený nižšie na obrázok. Použili sme tu systémové volanie fork (); keď sa vytvorí podradený proces, p sa priradí 0. Pri použití systémového volania exec je sample1.c bude nahradené vzorkou2.c.

Ukážka1.c

Ukážka2.c

Podobne ako v príkladoch diskutovaných vyššie bude súbor sample2 obsahovať príkazy printf. V ukážke1.c, najskôr sa vykoná prvý príkaz na tlač, potom sa zavolá funkcia fork, keď p == 0, potom sa vykoná detská časť a sample2.Spustí sa súbor c. Výstup bude obsahovať GCC na kompiláciu oboch súborov. Tu rodičovská vzorka1.c id a sample2.c id je iný, pretože sú rodič a dieťa.

Záver

V tomto článku sme použili vidlicu aj exec osobitne a spoločne, aby sme ľahko pochopili použitie a koncepciu. Dúfam, že tento tutoriál obsahuje dostatočný obsah, ktorý povedie k prístupu pri rozširovaní vašich vedomostí.

Hry Ako vyvíjať hru v systéme Linux
Ako vyvíjať hru v systéme Linux
Pred desiatimi rokmi by len málo používateľov Linuxu predpovedalo, že ich obľúbený operačný systém bude jedného dňa populárnou hernou platformou pre k...
Hry Open source porty komerčných herných strojov
Open source porty komerčných herných strojov
Na hranie starých i niektorých z nedávnych herných titulov je možné využiť bezplatné hry s otvoreným zdrojom a multiplatformové herné enginy. V tomto ...
Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...