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.cKeď 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í.