C Programování

Kódování pomocí vidlice a exec příkladem v c

Kódování pomocí vidlice a exec příkladem v c
Název našeho článku obsahuje dvě různé funkce jazyka C, ke kterým dochází při spuštění libovolného programu v našem systému. Bohužel neexistuje nulová možnost výskytu více než jednoho programu v C současně. V určitou dobu se může stát pouze jeden úkol, což znamená, že neumožňuje spuštění souběžných programů. Způsobí to, že budete čekat na dokončení jednoho procesu a provedení druhého. Abyste se vyhnuli tomuto problému s řešením problémů, možná budete muset svůj program vyvíjet dobrým způsobem, abyste byli dobrým vývojářem. Linux fork () se používá k překonání čekání a umožnění souběžnosti ve vašem systému. Pomáhá při duplikování nového procesu a vytváří nový voláním duplikovaného procesu. Nový proces je podřízený proces a ten předchozí se nazývá nadřazený proces.

Zatímco funkce exec () se používá ke změně stávajícího programu za nový. Toto nahrazení se provádí provedením změn v obsahu programu nebo souboru. Rozdíl mezi vidlicí a execem je tedy v tom, že fork vytváří nový proces ze stávajícího procesu a exec se používá k nahrazení stávajícího programu vytvořením nového.

Předpoklady

Chcete-li ve svém systému Linux spustit libovolný program c, musíme do něj nainstalovat některé předpoklady. Přejít na terminál pomocí zkratkové metody Ctrl + Alt + T. Nyní zadejte následující příkazy pro instalaci manuálových stránek.

$ sudo apt install manpages-dev

Nainstaluje se všechny odpovídající stránky.

Chcete-li spustit program v systému Linux, musíte si nainstalovat kompilátor kódu. To se používá ke kompilaci kódu a jeho spuštění. Za tímto účelem do našeho systému nainstalujeme úložiště GCC.

$ sudo apt nainstalovat GCC

Kódování pomocí exec v c

Protože jsme nainstalovali manuálové stránky v Linuxu, použijeme následující příkaz k zobrazení popisu týkajícího se exec. Syntaxe primárního vzorku je následující:

Syntax

Exec (cesta / soubor, argv);

Zde jsme použili „unistd.h ”záhlaví, protože obsahuje všechny informace o rodinách funkce exec.

$ man exec

Nyní na výše citovaném obrázku můžete pozorovat typy exec. Jedná se o rodinu funkcí exec. Každý z nich je pro jinou funkci sledující stejnou základnu, „exec.“

Příklad: Nyní, když se posuneme dále, popíšeme funkčnost exec pomocí příkladu. Vezmeme jednu funkci exec, abychom demonstrovali její fungování, což je „execv.„Nejprve vytvoříme dva soubory s příponou„.C.„Po jejich vytvoření do nich napíšeme příslušné kódy a provedeme je, abychom viděli výsledek.

Zvažte název souboru „sample4.C". Otevřete jej a použijte následující kód. V tomto kódu jsme použili execv konkrétním způsobem uvedeným níže.

Execv („./ sample4copy “, args);

První část obsahuje novou cestu k adresáři a druhá část zobrazuje pole argumentů jako parametr, který jsme předali.

Ukázka4.C

Nejprve jsme vytiskli ID aktuálního procesu. Zadruhé jsme vytvořili pole znaků s NULL na konci pro ukončení. Zatřetí jsme nazvali funkci sample4copy.

Sample4copy.C

Když zavoláme funkci exec (), změní se obraz procesu. Níže citovaný obrázek níže ukazuje kód sample4copy.C.

Zde jsme použili pouze tiskové příkazy k získání ID aktuálního procesu.

Výstup příslušných kódů lze získat pomocí následujících příkazů.

$ GCC-o sample4 sample4.C
$ GCC -o sample4copy sample4copy.C
$ ./ sample4

Jak jsme popsali dříve, slovo „GCC“ se používá ke kompilaci kódu a po kompilaci je kód úspěšně proveden.

Podle obrázku je PID vzorku4.Soubor c se zobrazí jako první, protože byl deklarován před voláním exec. Poté, co je volána funkce exec (), obě tiskové příkazy souboru sample4copy.c se provádí tam, kde se getpid () používá k získání ID procesu.

Kódování vidličkou v c

Funkce fork () vytvoří podřízený proces z nadřazeného procesu. Obsahuje také dvě záhlaví, včetně informací o rozvětvení.

Syntax:

Pid_t vidlice (void);

Pro pomoc s používáním můžeme použít manuálovou stránku

$ vidlice pro muže

Příklad: Nyní zvažte příklad vytvořením souboru „sample3.C". Zadáme kód do souboru. Podle kódu jsme nastavili stav vidlice jako forkrank.

Ukázka3.C

K uplatnění podmínky jsme použili příkaz „if-else“. Zde jsou deklarovány jednoduché tiskové příkazy, které pomáhají porozumět konceptu fork (). Forkrank je nejprve deklarován jako 0 a poté -1. S fork () nyní existují dva procesy, které fungují souběžně. Výstup lze získat pomocí stejného kódu, jaký se používá výše v příkladu exec.

$ GCC -o vzorek3.C
$./ sample3

Výstup ukazuje, že podřízený proces je spuštěn dříve než nadřazený, když čekal nadřazený proces. Funkce čekání znamená, že způsobí, že nadřazená funkce bude čekat, dokud nebude ukončen jeden ze všech podřízených procesů.

Systém Fork and Exec volá kolektivně

Zde vezmeme dva soubory s názvem „sample1.c “a„ sample2.C". Nejprve otevřete soubor sampl1.c a napište kód, který je připojen níže na obrázku. Zde jsme použili systémové volání fork (); při vytvoření podřízeného procesu bude p přiřazeno 0. Při použití systémového volání exec je sample1.c bude nahrazeno sample2.C.

Ukázka 1.C

Ukázka 2.C

Podobně jako v příkladech popsaných výše bude soubor sample2 obsahovat příkazy printf. V sample1.c, nejprve se provede první tiskový příkaz, potom se vyvolá funkce vidlice, když p == 0, potom se provede dětská část a sample2.Soubor c bude spuštěn. Výstup bude obsahovat GCC pro kompilaci obou souborů. Zde nadřazený vzorek1.c id a sample2.c id je jiný, protože jsou rodič a dítě.

Závěr

V tomto článku jsme použili vidličku i exec samostatně a společně, abychom snadno porozuměli použití a konceptu. Doufám, že tento výukový program obsahuje dostatečný obsah, který povede k přístupu při zvyšování vašich znalostí.

Jak obrátit směr posouvání myši a touchpadu ve Windows 10
Myš a Touchpadnejenže usnadňují výpočet, ale jsou efektivnější a méně časově náročné. Nemůžeme si představit život bez těchto zařízení, ale přesto je ...
Jak změnit velikost, barvu a schéma kurzoru myši a kurzoru v systému Windows 10
Ukazatel myši a kurzor ve Windows 10 jsou velmi důležité aspekty operačního systému. To lze říci i pro jiné operační systémy, takže ve skutečnosti nej...
Hry Zdarma a open source herní motory pro vývoj linuxových her
Zdarma a open source herní motory pro vývoj linuxových her
Tento článek pokryje seznam bezplatných a otevřených herních enginů, které lze použít pro vývoj 2D a 3D her v systému Linux. Existuje mnoho takových h...