C programavimas

Kodavimas šakute ir „exec“ pavyzdžiu c

Kodavimas šakute ir „exec“ pavyzdžiu c
Mūsų straipsnio pavadinime yra dvi skirtingos C kalbos funkcijos, atsirandančios vykdant bet kurią mūsų sistemos programą. Deja, nėra galimybės nulemti daugiau nei vienos programos vienu metu C. Tam tikru metu gali įvykti tik viena užduotis, o tai reiškia, kad ji neleidžia vykdyti vienu metu vykdomų programų. Tai verčia laukti, kol baigsis vienas procesas, kad įvykdytumėte kitą. Kad išvengtumėte šios trikčių šalinimo problemos, gali reikėti sukurti savo programą gerąja prasme, nes esate geras kūrėjas. „Linux“ šakutė () naudojama norint įveikti laukimą ir leisti jūsų sistemoje sutapti. Tai padeda kopijuoti naują procesą ir sukuria naują, iškviesdamas pasikartojantį procesą. Naujas procesas yra vaiko procesas, o ankstesnis procesas vadinamas tėvų procesu.

Tuo tarpu „exec“) funkcija naudojama dabartinei programai pakeisti nauja. Šis pakeitimas atliekamas pakeičiant programos ar failo turinį. Taigi šakės ir „exec“ skirtumai yra tai, kad šakutė sukuria naują procesą iš esamo proceso, o „exec“ naudojama esamai programai pakeisti sukuriant naują.

Būtinos sąlygos

Norėdami vykdyti bet kurią „c“ programą „Linux“ sistemoje, turime įdiegti joje keletą išankstinių sąlygų. Eikite į terminalą naudodami sparčiųjų klavišų metodą „Ctrl“ + „Alt“ + T. Dabar įdiekite šias komandas, kad įdiegtumėte man puslapius.

$ sudo apt įdiekite manpages-dev

Ji įdiegs visus atitinkamus puslapius.

Žengdami į priekį, norėdami paleisti programą „Linux“, turite įdiegti kodų kompiliatorių. Tai naudojama kompiliuoti kodą ir jį vykdyti. Šiuo tikslu savo sistemoje įdiegsime GCC saugyklas.

$ sudo apt įdiekite GCC

Kodavimas su „exec“ c

Įdiegę „man“ puslapius „Linux“ sistemoje, naudosime šią komandą, kad pamatytume „exec“ aprašą. Pagrindinė pavyzdžio sintaksė yra tokia:

Sintaksė

„Exec“ (kelio pavadinimas / failas, argv);

Čia mes panaudojome „unistd.h “antraštė, nes joje yra visa informacija apie„ exec “funkcijų šeimas.

$ man exec

Dabar aukščiau nurodytame paveikslėlyje galite stebėti „exec“ tipus. Tai yra „exec“ funkcijų šeima. Kiekvienas jų skirtas skirtingai funkcijai, vadovaujantis ta pačia baze „exec.“

Pavyzdys: Dabar, eidami toliau, pavyzdžio pagalba apibūdinsime „exec“ funkcionalumą. Norėdami parodyti jos veikimą, atliksime vieną „exec“ funkciją, tai yra „execv."Pirmiausia sukursime du failus su plėtiniu".c.„Po jų sukūrimo mes juose įrašysime atitinkamus kodus ir vykdysime, kad pamatytume rezultatą.

Apsvarstykite failo pavadinimą „sample4.c “. Atidarykite jį ir naudokite šį kodą. Šiame kode mes naudojome „execv“ tam tikru būdu, nurodytu žemiau.

Execv („./ sample4copy “, argumentai);

Pirmoje dalyje yra naujas katalogo kelias, o antroje dalyje argumentų masyvas rodomas kaip parametras, kurį mes perdavėme.

Pavyzdys4.c

Visų pirma, atspausdinome dabartinio proceso ID. Antra, mes sukūrėme simbolių masyvą, kurio pabaigoje yra NULL. Trečia, mes paskambinome „sample4copy“ funkcija.

4 pavyzdžių kopija.c

Kai iškviečiame funkciją „exec“ (), proceso vaizdas keičiamas. Žemiau pateiktame paveikslėlyje pateikiamas „sample4copy“ kodas.c.

Čia mes naudojome tik atspausdintus teiginius, kad gautume dabartinio proceso ID.

Atitinkamų kodų išvestį galima gauti naudojant šias komandas.

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

Kaip aprašėme anksčiau, kodui sudaryti naudojamas žodis „GCC“, o po sukūrimo kodas sėkmingai vykdomas.

Pagal vaizdą, 4 pavyzdžio PID.c failas rodomas pirmiausia toks, koks buvo deklaruotas prieš vykdant exec skambutį. Tada, iškvietus „exec“), abu failo „sample4copy“ spausdinimo teiginiai.c vykdomas ten, kur proceso ID gaunamas getpid ().

Kodavimas šakute c

Funkcija „šakutė“ () sukuria vaiko procesą iš tėvų proceso. Jame taip pat yra dvi antraštės, įskaitant informaciją apie šakutes.

Sintaksė:

Pid_t šakutė (niekinė);

Mes galime naudoti vyro puslapį, kad galėtume naudoti

$ žmogaus šakutė

Pavyzdys: Dabar apsvarstykite pavyzdį sukurdami failą „sample3.c “. Įvesime kodą į failą. Pagal kodą šakės būseną nustatėme kaip forkrank.

Pavyzdys3.c

Sąlygai pritaikyti naudojome teiginį „jei-dar“. Čia pateikiamos paprastos spausdinimo komandos, padedančios suprasti šakės () koncepciją. Pirmiausia „Forkrank“ deklaruojamas kaip 0, o po to –1. Su šakute () dabar veikia du procesai, kurie veikia vienu metu. Išvestį galima gauti naudojant tą patį kodą, kuris buvo naudojamas aukščiau exec pavyzdyje.

$ GCC -o pavyzdys3.c
$./ pavyzdys3

Išvestis rodo, kad antrinis procesas vykdomas anksčiau nei tėvas, kai tėvo procesas laukė. Laukimo funkcija reiškia, kad ji priverčia tėvų funkciją laukti, nebent vienas iš visų vaiko procesų bus nutrauktas.

„Fork and Exec“ sistema skambina kolektyviai

Čia paimsime du failus pavadinimu „sample1.c “ir„ pavyzdys2.c “. Pirmiausia atidarykite failą sampl1.c ir parašykite kodą, kuris yra pridėtas žemiau paveikslėlyje. Čia mes panaudojome „fork () system-call“; kai bus sukurtas vaiko procesas, p bus priskirtas 0. Naudojant „exec system-call“, pavyzdys1.c bus pakeistas 2 pavyzdžiu.c.

Pavyzdys1.c

Pavyzdys2.c

Panašiai kaip aukščiau aptarti pavyzdžiai, „sample2“ faile bus „printf“ sakiniai. Imtyje1.c, pirmiausia įvykdoma pirmoji spausdinimo komanda, tada iškviečiama šakės funkcija, kai p == 0, tada vykdoma antrinė dalis ir pavyzdys2.c failas bus paleistas. Išvestyje bus GCC, kad būtų galima kompiliuoti abu failus. Čia tėvų pavyzdys.c id ir pavyzdys2.c id skiriasi, nes jie yra tėvai ir vaikai.

Išvada

Šiame straipsnyje mes naudojome tiek šakę, tiek egzeką atskirai ir kartu, kad lengvai suprastume naudojimą ir koncepciją. Tikiuosi, kad šioje pamokoje yra pakankamai turinio, prie kurio bus suteikta galimybė išplėsti jūsų žinias.

5 populiariausi „Linux“ skirtų ergonomiškų kompiuterinių pelių produktai
Ar ilgalaikis kompiuterio naudojimas sukelia riešo ar pirštų skausmą?? Ar jūs kenčiate nuo sąnarių standumo ir nuolat turite paspausti rankas? Ar jauč...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Peržiūrėkite pelės mygtukus skirtingai programinei įrangai naudodami „X-Mouse Button Control“
Galbūt jums reikia įrankio, kuris galėtų pakeisti jūsų pelės valdymą kiekvienoje jūsų naudojamoje programoje. Tokiu atveju galite išbandyti programą, ...