C Programmēšana

Kodēšana ar dakšiņu un exec ar piemēru c

Kodēšana ar dakšiņu un exec ar piemēru c
Mūsu raksta nosaukums satur divas dažādas C valodas funkcijas, kas rodas, palaižot jebkuru programmu mūsu sistēmā. Diemžēl nav nulles iespēju vienā reizē parādīties vairāk nekā viena programma C. Konkrētā laikā var notikt tikai viens uzdevums, kas nozīmē, ka tas neļauj palaist vienlaicīgas programmas. Tas liek gaidīt viena procesa pabeigšanu, lai izpildītu otru. Lai izvairītos no šīs problēmu novēršanas problēmas, jums, iespējams, būs jāattīsta sava programma, būdams labs izstrādātājs. Linux dakša () tiek izmantota, lai pārvarētu gaidīšanu un ļautu vienlaicībai jūsu sistēmā. Tas palīdz dublēt jaunu procesu un izveido jaunu, izsaucot dublēto procesu. Jaunais process ir bērna process, un iepriekšējo sauc par vecāku procesu.

Tā kā exec () funkcija tiek izmantota, lai mainītu pašreizējo esošo programmu uz jauno. Šī aizstāšana tiek veikta, veicot grozījumus programmas vai faila saturā. Tātad dakšas un exec atšķirība ir tāda, ka dakša no esošā procesa rada jaunu procesu, un exec tiek izmantots, lai aizstātu esošo programmu, izveidojot jaunu.

Priekšnoteikumi

Lai Linux sistēmā izpildītu jebkuru c programmu, mums tajā jāinstalē daži priekšnoteikumi. Dodieties uz termināli, izmantojot īsinājumtaustiņu Ctrl + Alt + T. Tagad, lai instalētu manuālās lapas, uzrakstiet šādas komandas.

$ sudo apt instalējiet manpages-dev

Tas instalēs visas atbilstošās lapas.

Virzoties uz priekšu, lai palaistu programmu Linux, jums jāinstalē kodu kompilators. Tas tiek izmantots koda sastādīšanai un izpildei. Šim nolūkam mēs savā sistēmā instalēsim GCC krātuves.

$ sudo apt instalējiet GCC

Kodēšana ar exec c

Kad mēs esam instalējuši man lapas Linux, mēs izmantosim šādu komandu, lai redzētu aprakstu par exec. Primārā parauga sintakse ir šāda:

Sintakse

Exec (ceļa nosaukums / fails, argv);

Šeit mēs izmantojām “unistd.h ”galvene, jo tajā ir visa informācija par exec funkciju ģimenēm.

$ man exec

Tagad iepriekš citētajā attēlā varat novērot exec veidus. Tās ir exec funkciju saime. Katrs no tiem ir paredzēts atšķirīgai funkcijai, kas seko tai pašai bāzei “exec.”

Piemērs: Tagad, virzoties tālāk, mēs ar piemēru aprakstīsim exec funkcionalitāti. Lai parādītu tā darbību, mēs veiksim vienu exec funkciju, kas ir “execv.”Pirmkārt, mēs izveidosim divus failus ar paplašinājumu“.c.Pēc to izveides mēs ierakstīsim attiecīgos kodus un izpildīsim tos, lai redzētu rezultātu.

Apsveriet faila nosaukumu “sample4.c ”. Lūdzu, atveriet to un izmantojiet šo kodu. Šajā kodā mēs izmantojām execv īpašā veidā, kas minēts zemāk.

Execv (“./ sample4copy ”, argumenti);

Pirmajā daļā ir jauns direktorijas ceļš, un otrajā daļā tiek parādīts argumentu masīvs kā mums nodotais parametrs.

4. paraugs.c

Pirmkārt, mēs esam izdrukājuši pašreizējā procesa ID. Otrkārt, mēs esam izveidojuši rakstzīmju masīvu, kura beigās ir NULL. Treškārt, mēs esam izsaukuši funkciju sample4copy.

Parauga4 kopija.c

Izsaucot funkciju exec (), procesa attēls tiek mainīts. Zemāk citētajā attēlā parādīts sample4copy kods.c.

Šeit mēs esam izmantojuši tikai izdrukas paziņojumus, lai iegūtu pašreizējā procesa ID.

Attiecīgo kodu izvadi var iegūt, izmantojot šādas komandas.

$ GCC-o paraugs4 paraugs4.c
$ GCC -o sample4copy sample4copy.c
$ ./ paraugs4

Kā jau iepriekš aprakstījām, koda sastādīšanai tiek izmantots vārds “GCC”, un pēc sastādīšanas kods tiek veiksmīgi izpildīts.

Saskaņā ar attēlu, 4. parauga PID.c fails tiek parādīts pirmais, kā tas tika deklarēts pirms exec zvana. Pēc tam, kad tiek izsaukta funkcija exec (), abi faila sample4copy izdrukas paziņojumi.c tiek izpildīts tur, kur procesa id iegūšanai tiek izmantots getpid ().

Kodēšana ar dakšiņu c

Funkcija dakša () izveido bērna procesu no vecāku procesa. Tajā ir arī divas galvenes, ieskaitot tajā esošo informāciju par dakšiņu.

Sintakse:

Pid_t dakša (spēkā neesoša);

Mēs varam izmantot rokasgrāmatu, lai palīdzētu lietošanā

$ man dakša

Piemērs: Tagad apsveriet piemēru, izveidojot failu “sample3.c ”. Mēs ievadīsim kodu faila iekšpusē. Saskaņā ar kodu mēs esam iestatījuši dakšas statusu kā forkrank.

3. paraugs.c

Nosacījuma piemērošanai mēs esam izmantojuši paziņojumu “ja-cits”. Šeit ir norādītas vienkāršas drukas komandas, lai palīdzētu izprast dakšas () jēdzienu. Forkrank vispirms tiek deklarēts kā 0 un pēc tam -1. Ar dakšiņu () tagad ir divi procesi, kas darbojas vienlaicīgi. Rezultātu var iegūt, izmantojot to pašu kodu, kas iepriekš izmantots exec piemērā.

$ GCC -o paraugs3.c
$./ paraugs3

Rezultāts parāda, ka bērna process tiek izpildīts agrāk nekā vecāks, kad vecāku process gaidīja. Gaidīšanas funkcija nozīmē, ka tā liek vecāku funkcijai gaidīt, ja netiek pārtraukts kāds no visiem bērna procesiem.

Dakšu un Exec sistēmas zvani kolektīvi

Šeit mēs ņemsim divus failus ar nosaukumu “sample1.c ”un“ paraugs2.c ”. Vispirms atveriet failu sampl1.c un ierakstiet kodu, kas ir pievienots zemāk attēlā. Mēs šeit esam izmantojuši fork () sistēmas izsaukumu; kad tiks izveidots bērna process, p tiks piešķirts ar 0. Izmantojot exec system-call, paraugs1.c tiks aizstāts ar paraugu2.c.

Paraugs1.c

2. paraugs.c

Līdzīgi iepriekš aplūkotajiem piemēriem, parauga2 failā būs printf priekšraksti. Paraugā1.c, vispirms tiek izpildīta pirmā drukas komanda, pēc tam tiek izsaukta dakšas funkcija, kad p == 0, tad tiek izpildīta bērnu daļa un paraugs2.c fails tiks palaists. Izejā būs GCC, lai apkopotu abus failus. Šeit vecāku paraugs.c id un paraugs2.c id ir atšķirīgs, jo viņi ir vecāki un bērni.

Secinājums

Šajā rakstā mēs izmantojām gan dakšiņu, gan exec atsevišķi un kopā, lai viegli izprastu lietojumu un koncepciju. Es ceru, ka šajā apmācībā ir pietiekams saturs, kas ļaus piekļūt jūsu zināšanu paplašināšanai.

Kā palielināt FPS Linux?
FPS apzīmē Kadri sekundē. FPS uzdevums ir izmērīt kadru ātrumu video atskaņošanā vai spēļu izrādēs. Vienkāršos vārdos nepārtrauktu pilnekrāna attēlu s...
Populārākās Oculus App Lab spēles
Ja esat Oculus austiņu īpašnieks, jums ir jāsazinās par sānu ielādi. Sānu ielāde ir process, kurā austiņās tiek instalēts saturs, kas nav veikals. Sid...
10 labākās spēles, kuras spēlēt Ubuntu
Windows platforma ir bijusi viena no dominējošajām spēļu platformām, jo ​​mūsdienās tiek attīstīts milzīgs spēļu skaits, lai atbalstītu Windows. Vai k...