C Programmering

Koding med gaffel og exec ved eksempel i c

Koding med gaffel og exec ved eksempel i c
Tittelen på artikkelen vår inneholder to forskjellige funksjoner i C-språket som oppstår når du kjører et program i systemet vårt. Dessverre er det ingen mulighet for å forekomme mer enn ett program om gangen i C. Bare en enkelt oppgave kan skje på et bestemt tidspunkt, noe som betyr at den ikke lar samtidige programmer kjøre. Det får deg til å vente på at den ene prosessen er ferdig for å utføre den andre. For å unngå dette feilsøkingsproblemet, må du kanskje utvikle programmet på en god måte, og være en god utvikler. Linux fork () brukes til å overvinne ventetiden og tillate samtidighet i systemet ditt. Det hjelper med å duplisere en ny prosess og oppretter en ny ved å ringe den dupliserte prosessen. Den nye prosessen er barneprosessen, og den forrige kalles foreldreprosessen.

Mens exec () -funksjonen brukes til å endre det eksisterende programmet med det nye. Denne erstatningen gjøres ved å gjøre endringer i innholdet i et program eller en fil. Ulikheten mellom gaffel og exec er at gaffel skaper en ny prosess fra den eksisterende prosessen, og exec brukes til å erstatte det eksisterende programmet ved å lage et nytt.

Forutsetninger

For å utføre et c-program på Linux-systemet ditt, må vi installere noen forutsetninger på det. Gå til terminalen ved å bruke snarveiemetoden Ctrl + Alt + T. Skriv nå følgende kommandoer for å installere mansidene.

$ sudo apt installer manpages-dev

Den vil installere alle de tilsvarende sidene.

For å kjøre et program på Linux, må du installere en kodekompilator. Det brukes til å kompilere koden og utføre den. For dette formålet vil vi installere GCC-arkiver i systemet vårt.

$ sudo apt installere GCC

Koding med exec i c

Da vi har installert mansidene i Linux, vil vi bruke følgende kommando for å se beskrivelsen angående exec. Den primære eksempelsyntaks er som følger:

Syntaks

Exec (stienavn / fil, argv);

Her har vi brukt “unistd.h ”-hode da den inneholder all informasjon om familier med eksekveringsfunksjon.

$ man exec

Nå i det ovennevnte bildet kan du observere typer exec. Dette er familien av eksekveringsfunksjoner. Hver og en er for en annen funksjon som følger den samme basen, “exec.”

Eksempel: Nå, videre, vil vi beskrive funksjonaliteten til exec ved hjelp av et eksempel. Vi vil ta en funksjon av exec for å demonstrere hvordan den fungerer, som er “execv.”For det første vil vi lage to filer med utvidelsen av“.c.”Etter at de ble opprettet, vil vi skrive respektive koder i dem og utføre dem for å se resultatet.

Vurder et filnavn “sample4.c ”. Vennligst åpne den og bruk følgende kode. I denne koden har vi brukt execv på en spesiell måte sitert nedenfor.

Execv (“./ sample4copy ”, args);

Den første delen inneholder den nye katalogbanen, og den andre delen viser argumentene som en parameter vi har passert.

Eksempel 4.c

Først og fremst har vi skrevet ut den nåværende prosessens id. For det andre har vi opprettet et tegnarray som har NULL til slutt for avslutningen. For det tredje har vi kalt funksjonen sample4copy.

Eksempel4kopi.c

Når vi kaller exec-funksjonen (), endres prosessbildet. Nedenfor sitert bilde nedenfor viser koden for sample4copy.c.

Her har vi bare brukt utskriftsuttalelser for å få ID til den nåværende prosessen.

Utdataene fra de respektive kodene kan oppnås ved å bruke følgende kommandoer.

$ GCC-o prøve4 prøve4.c
$ GCC -o sample4copy sample4copy.c
$ ./ prøve4

Som vi har beskrevet tidligere, brukes “GCC” -ordet til å kompilere koden, og etter kompilering blir koden vellykket.

I følge bildet, PID for sample4.c-filen vises først slik den ble erklært før exec-samtalen. Så etter at exec () -funksjonen er kalt, begge utskriftsuttalelsene til filen sample4copy.c utføres der getpid () brukes til å oppnå prosessens id.

Koding med en gaffel i c

Gaffel () -funksjonen lager barneprosessen fra foreldreprosessen. Den inneholder også to overskrifter, inkludert gaffelinformasjonen i den.

Syntaks:

Pid_t gaffel (ugyldig);

Vi kan bruke mannesiden for å få hjelp til bruken

$ man gaffel

Eksempel: Vurder nå et eksempel ved å lage en fil “sample3.c ”. Vi legger inn koden i filen. I følge koden har vi satt gaffelstatusen som forkrank.

Eksempel 3.c

Vi har brukt "if-else" -uttalelsen for å anvende tilstanden. Enkle utskriftskommandoer er erklært her for å hjelpe til med å forstå begrepet fork (). Forkrank blir først erklært som 0 og deretter -1. Med en gaffel () er det nå to prosesser som fungerer samtidig. Output kan oppnås ved å bruke samme kode, som brukt ovenfor i exec-eksempel.

$ GCC -o prøve3.c
$./ prøve3

Utgangen viser at underordnet prosess utføres tidligere enn foreldrene når foreldreprosessen ventet. Ventefunksjonen innebærer at den får foreldrefunksjonen til å vente med mindre en av alle barneprosessene avsluttes.

Gaffel- og Exec-systemanrop kollektivt

Her tar vi to filer kalt “sample1.c "og" sample2.c ”. Åpne først filsampl1.c og skriv koden som er lagt ved nedenfor i bildet. Vi har brukt fork () systemanrop her; når barnet prosessen er opprettet, vil p bli tildelt 0. Mens du bruker exec systemanrop, er prøven 1.c vil bli erstattet med sample2.c.

Eksempel 1.c

Eksempel2.c

I likhet med eksemplene som er diskutert ovenfor, vil sample2-filen inneholde printf-setningene i den. I prøve1.c, den første utskriftskommandoen blir utført først, deretter kalles gaffelfunksjonen, når p == 0, så blir underordnet del utført og sample2.c-fil kjøres. Utgangen vil inneholde GCC for å kompilere begge filene. Her foreldreeksempel1.c id og sample2.ID er forskjellig fordi de er foreldre og barn.

Konklusjon

I denne artikkelen har vi brukt både gaffel og eksekvering hver for seg og samlet for å forstå bruken og konseptet enkelt. Jeg håper denne veiledningen inneholder tilstrekkelig innhold som vil føre til tilgang til å øke din kunnskap.

Mus Midterste museknapp fungerer ikke i Windows 10
Midterste museknapp fungerer ikke i Windows 10
De midtre museknapp hjelper deg med å bla gjennom lange websider og skjermer med mye data. Hvis det stopper, vil du ende opp med å bruke tastaturet ti...
Mus Hvordan endre venstre og høyre museknapp på Windows 10 PC
Hvordan endre venstre og høyre museknapp på Windows 10 PC
Det er ganske vanlig at alle datamusenheter er ergonomisk designet for høyrehendte brukere. Men det er tilgjengelige musenheter som er spesielt design...
Mus Etterlig museklikk ved å sveve med Clickless Mouse i Windows 10
Etterlig museklikk ved å sveve med Clickless Mouse i Windows 10
Bruk av mus eller tastatur i feil stilling for overdreven bruk kan føre til mange helseproblemer, inkludert belastning, karpaltunnelsyndrom og mer. I ...