Funkcija exec () se uporablja za spreminjanje obstoječega programa z novim. Ta zamenjava se opravi s spremembami vsebine programa ali datoteke. Razlika med fork in exec je torej v tem, da fork ustvari nov postopek iz obstoječega, exec pa se uporablja za nadomestitev obstoječega programa z ustvarjanjem novega.
Pogoji
Če želite zagnati kateri koli program c v vašem sistemu Linux, moramo nanj namestiti nekaj predpogojev. Do terminala pojdite z bližnjico Ctrl + Alt + T. Zdaj napišite naslednje ukaze za namestitev strani z man.
$ sudo apt install manpages-dev
Namestila bo vse ustrezne strani.
Če želite zagnati program v Linuxu, morate namestiti prevajalnik kod. To se uporablja za prevajanje kode in njeno izvajanje. V ta namen bomo v naš sistem namestili skladišča GCC.
$ sudo apt namestite GCC
Kodiranje z exec v c
Ker smo v Linux namestili priročne strani, bomo z naslednjim ukazom videli opis glede exec. Primarna sintaksa vzorca je naslednja:
Sintaksa
Exec (ime / datoteka, argv);Tu smo uporabili „unistd.glava h ", saj vsebuje vse informacije o družinah izvršilne funkcije.
$ man exec
Zdaj na zgoraj navedeni sliki lahko opazujete vrste exec. To so družine izvrševalnih funkcij. Vsak je namenjen drugačni funkciji, ki sledi isti osnovi, “exec."
Primer: Zdaj, ko gremo naprej, bomo s pomočjo primera opisali funkcionalnost exec. Za prikaz svojega delovanja bomo uporabili eno funkcijo exec, ki je »execv."Najprej bomo ustvarili dve datoteki s pripono".c.”Po njihovem ustvarjanju bomo vanje zapisali ustrezne kode in jih izvedli, da bomo videli rezultat.
Razmislite o imenu datoteke »sample4.c ". Odprite ga in uporabite naslednjo kodo. V tej kodi smo execv uporabili na spodaj naveden način.
Execv („./ sample4copy ", argumenti);Prvi del vsebuje novo pot do imenika, drugi del pa matriko argumentov kot parameter, ki smo ga poslali.
Vzorec4.c
Najprej smo natisnili ID trenutnega postopka. Drugič, za zaključek smo ustvarili niz znakov, ki ima na koncu NULL. Tretjič, poklicali smo funkcijo sample4copy.
Sample4copy.cKo pokličemo funkcijo exec (), se slika procesa spremeni. Spodaj navedena navedena slika prikazuje kodo sample4copy.c.
Tu smo uporabili samo izjave za tiskanje, da dobimo ID trenutnega postopka.
Izhod ustreznih kod lahko dobite z naslednjimi ukazi.
$ GCC-o vzorec4 vzorec4.c$ GCC -o sample4copy sample4copy.c
$ ./ vzorec4
Kot smo že opisali, se za prevajanje kode uporablja beseda »GCC«, ki se po prevajanju uspešno izvede.
Glede na sliko, PID vzorca4.Datoteka c je najprej prikazana, kot je bila deklarirana pred klicem exec. Potem, ko je poklicana funkcija exec (), sta oba stavka za tiskanje datoteke sample4copy.c se izvede tam, kjer se za pridobitev id-ja procesa uporablja getpid ().
Kodiranje z vilicami v c
Funkcija fork () ustvari podrejeni proces iz nadrejenega procesa. Vsebuje tudi dve glavi, vključno z informacijami o vilicah.
Sintaksa:
Vilice Pid_t (void);Za pomoč pri uporabi lahko uporabimo man stran
$ man vilice
Primer: Zdaj si oglejte primer, tako da ustvarite datoteko »sample3.c ". Kodo bomo vnesli v datoteko. Glede na kodo smo status vilic nastavili kot vilice.
Vzorec3.c
Za uporabo pogoja smo uporabili stavek "če-drugače". Tu so navedeni preprosti ukazi za tiskanje, ki pomagajo pri razumevanju koncepta fork (). Forkrank se najprej navede kot 0 in nato -1. Z fork () sta zdaj dva procesa, ki delujeta sočasno. Rezultat je mogoče dobiti z uporabo iste kode, kot je bila uporabljena zgoraj v primeru exec.
$ GCC -o vzorec3.c$./ vzorec3
Rezultat kaže, da se nadrejeni postopek izvede prej kot nadrejeni, ko je nadrejeni postopek čakal. Funkcija čakanja pomeni, da povzroči, da nadrejena funkcija čaka, razen če se zaključi eden od vseh podrejenih procesov.
Fork in Exec sistemski klici
Tu bomo vzeli dve datoteki z imenom »sample1.c "in" vzorec2.c ". Najprej odprite datoteko sampl1.c in napišite kodo, ki je priložena spodaj na sliki. Tu smo uporabili sistemski klic fork (); ko se ustvari podrejeni postopek, bo p dodeljen z 0. Med uporabo sistemskega klica exec vzorec1.c bo nadomeščen z sample2.c.
Vzorec1.c
Vzorec2.c
Podobno kot zgoraj obravnavani primeri bo datoteka sample2 v sebi vsebovala izjave printf. V vzorcu1.c, najprej se izvede prvi ukaz za tiskanje, nato se pokliče funkcija vilice, ko je p == 0, nato se izvede podrejeni del in sample2.c datoteka bo zagnana. Izhod bo vseboval GCC za prevajanje obeh datotek. Tu nadrejeni vzorec1.c id in vzorec2.c id je drugačen, ker sta starša in otroka.
Zaključek
V tem članku smo vilice in exec uporabili ločeno in skupaj za lažje razumevanje uporabe in koncepta. Upam, da ta vadnica vsebuje dovolj vsebine, ki bo vodila do dostopa do stopnjevanja vašega znanja.