Kun taas exec () -funktiota käytetään muuttamaan nykyinen ohjelma uudella. Tämä korvaaminen tehdään tekemällä muutoksia ohjelman tai tiedoston sisältöön. Joten haarukan ja execin välinen ero on, että haarukka luo uuden prosessin olemassa olevasta prosessista, ja execiä käytetään korvaamaan nykyinen ohjelma luomalla uusi.
Edellytykset
C-ohjelman suorittamiseksi Linux-järjestelmässä meidän on asennettava siihen joitakin edellytyksiä. Siirry päätelaitteeseen käyttämällä pikavalintamenetelmää Ctrl + Alt + T. Kirjoita nyt seuraavat komennot man -sivujen asentamiseksi.
$ sudo apt asenna manpages-dev
Se asentaa kaikki vastaavat sivut.
Eteenpäin, jotta voit suorittaa ohjelman Linuxissa, sinun on asennettava koodin kääntäjä. Sitä käytetään koodin kokoamiseen ja suorittamiseen. Tätä tarkoitusta varten asennamme GCC-arkistot järjestelmäämme.
$ sudo apt asentaa GCC
Koodaus execillä c: ssä
Kun olemme asentaneet man-sivut Linuxiin, käytämme seuraavaa komentoa nähdäksesi exec-kuvauksen. Ensisijaisen näytteen syntaksit ovat seuraavat:
Syntaksi
Exec (polun nimi / tiedosto, argv);Tässä olemme käyttäneet "unistd.h ”-otsikko, koska se sisältää kaiken tiedon exec-funktioperheistä.
$ mies exec
Nyt yllä mainitussa kuvassa voit tarkkailla exec-tyyppejä. Nämä ovat exec-toimintojen perhe. Kukin on tarkoitettu eri toiminnolle, joka seuraa samaa perustaa, ”exec.”
Esimerkki: Nyt, siirtymällä pidemmälle, kuvailemme execin toimivuutta esimerkin avulla. Otamme yhden toiminnon exec osoittaaksemme sen toimivuuden, joka on “execv."Ensinnäkin luomme kaksi tiedostoa, joiden laajennus on".c.”Luomisen jälkeen kirjoitamme niihin koodit ja suoritamme ne nähdäksesi tuloksen.
Harkitse tiedoston nimeä “näyte4.c ”. Avaa se ja käytä seuraavaa koodia. Tässä koodissa olemme käyttäneet execv-ohjelmaa alla mainitulla tavalla.
Execv (“./ sample4copy ”, väittää);Ensimmäisessä osassa on uusi hakemistopolku, ja toisessa osassa argumenttitaulukko näkyy parametrina, jonka olemme välittäneet.
Näyte 4.c
Ensinnäkin olemme tulostaneet nykyisen prosessin id: n. Toiseksi olemme luoneet merkistöryhmän, jonka lopettamista varten on NULL. Kolmanneksi olemme kutsuneet sample4copy-funktiota.
Näyte4kopio.cKun kutsumme exec-funktion (), prosessikuva muuttuu. Alla olevassa viittaetussa kuvassa näkyy sample4copy-koodi.c.
Tässä olemme käyttäneet vain tulostettuja lauseita saadaksemme nykyisen prosessin id: n.
Vastaavien koodien ulostulo voidaan saada käyttämällä seuraavia komentoja.
$ GCC-o näyte 4 näyte 4.c$ GCC -o sample4copy sample4copy.c
$ ./ näyte 4
Kuten olemme aiemmin kuvanneet, koodin kääntämiseen käytetään sanaa "GCC", ja kääntämisen jälkeen koodi suoritetaan onnistuneesti.
Kuvan mukaan näytteen PID4.c-tiedosto näytetään ensin, kuten se ilmoitettiin ennen exec-puhelua. Sitten kun exec () -funktio on kutsuttu, molemmat tiedoston sample4copy tulostuslausekkeet.c suoritetaan missä getpid (): ää käytetään prosessin tunnuksen saamiseen.
Koodaaminen haarukalla c
Haarukka () -toiminto luo aliprosessin vanhemman prosessista. Se sisältää myös kaksi otsikkoa, mukaan lukien siinä olevat haarukkatiedot.
Syntaksi:
Pid_t-haarukka (mitätön);Voimme käyttää man-sivua avuksi käytössä
$ mieshaarukka
Esimerkki: Tarkastellaan nyt esimerkkiä luomalla tiedosto “näyte3.c ”. Syötämme koodin tiedoston sisään. Koodin mukaan olemme asettaneet haarukan tilaksi forkrank.
Näyte 3.c
Olemme käyttäneet ehtoa sovellettaessa ”if-else” -lauseketta. Yksinkertaiset tulostuskomennot ilmoitetaan tässä haarukan () käsitteen ymmärtämisen helpottamiseksi. Forkrank ilmoitetaan ensin arvoksi 0 ja sitten -1. Haarukalla () on nyt kaksi prosessia, jotka toimivat samanaikaisesti. Tulos voidaan saada käyttämällä samaa koodia, jota käytetään yllä exec-esimerkissä.
$ GCC -o näyte 3.c$./ näyte 3
Lähtö osoittaa, että aliprosessi suoritetaan aikaisemmin kuin vanhempi, kun vanhempaprosessi odotti. Odotustoiminto tarkoittaa, että se saa vanhemmistoiminnon odottamaan, ellei jokin lapsen prosesseista ole päättynyt.
Fork and Exec -järjestelmä kutsuu yhdessä
Täällä otamme kaksi tiedostoa nimeltä “näyte1.c ”ja” näyte2.c ”. Avaa ensin tiedosto sampl1.c ja kirjoita koodi, joka on liitteenä kuvassa. Olemme käyttäneet tässä haarukan () järjestelmäkutsu; kun aliprosessi luodaan, p: lle osoitetaan 0. Kun käytät exec-järjestelmäpuhelua, näyte1.c korvataan näytteellä2.c.
Näyte 1.c
Näyte 2.c
Samoin kuin edellä käsitellyissä esimerkeissä, sample2-tiedosto sisältää siinä olevat printf-käskyt. Näytteessä 1.c, ensimmäinen tulostuskomento suoritetaan ensin, sitten haarukkatoiminto kutsutaan, kun p == 0, sitten suoritetaan lapsiosa ja näyte2.c-tiedosto suoritetaan. Lähtö sisältää GCC: n molempien tiedostojen kokoamiseksi. Tässä vanhemman näyte1.c-tunnus ja näyte2.c-tunnus on erilainen, koska he ovat vanhempia ja lapsia.
Johtopäätös
Tässä artikkelissa olemme käyttäneet sekä haarukkaa että execiä erikseen ja yhdessä ymmärtämään käytön ja käsitteen helposti. Toivon, että tämä opetusohjelma sisältää riittävästi sisältöä, joka johtaa pääsyyn tietosi kasvattamiseen.