C Programmering

Kodning med gaffel og udfør som eksempel i c

Kodning med gaffel og udfør som eksempel i c
Titlen på vores artikel indeholder to forskellige funktioner i C-sproget, der opstår, når du kører ethvert program i vores system. Desværre er der ingen mulighed for at forekomme mere end et program ad gangen i C. Kun en enkelt opgave kan ske på et bestemt tidspunkt, hvilket betyder, at det ikke tillader, at samtidige programmer køres. Det får dig til at vente på afslutningen af ​​den ene proces for at udføre den anden. For at undgå dette fejlfindingsproblem skal du muligvis udvikle dit program på en god måde og være en god udvikler. Linux fork () bruges til at overvinde ventetiden og tillade samtidighed i dit system. Det hjælper med at duplikere en ny proces og opretter en ny ved at kalde den duplikerede proces. Den nye proces er barneprocessen, og den forrige kaldes forældreprocessen.

Mens exec () -funktionen bruges til at ændre det nuværende eksisterende program med det nye. Denne udskiftning sker ved at foretage ændringer i indholdet af et program eller en fil. Forskellen mellem gaffel og exec er, at gaffel skaber en ny proces fra den eksisterende proces, og exec bruges til at erstatte det eksisterende program ved at oprette et nyt.

Forudsætninger

For at udføre et c-program på dit Linux-system skal vi installere nogle forudsætninger på det. Gå til terminalen ved hjælp af genvejsmetoden Ctrl + Alt + T. Skriv nu følgende kommandoer for at installere mandsiderne.

$ sudo apt install manpages-dev

Det installerer alle de tilsvarende sider.

Fremad for at køre et program på Linux skal du installere en kodekompilator. Det bruges til at kompilere koden og udføre den. Til dette formål installerer vi GCC-arkiver i vores system.

$ sudo apt installere GCC

Kodning med exec i c

Da vi har installeret mandsiderne i Linux, bruger vi følgende kommando til at se beskrivelsen vedrørende exec. Den primære eksempelsyntaks er som følger:

Syntaks

Exec (stienavn / fil, argv);

Her har vi brugt “unistd.h ”-overskrift, da den indeholder al information om familier med eksekveringsfunktion.

$ mand exec

Nu i det ovennævnte billede kan du observere typerne af udførelse. Disse er familien af ​​exec-funktioner. Hver enkelt er til en anden funktion, der følger den samme base, ”exec.”

Eksempel: Nu bevæger vi os videre og beskriver funktionaliteten af ​​exec ved hjælp af et eksempel. Vi vil tage en funktion af exec for at demonstrere dens arbejde, som er “execv.”For det første opretter vi to filer med udvidelsen af“.c.”Efter oprettelsen vil vi skrive respektive koder i dem og udføre dem for at se resultatet.

Overvej et filnavn “sample4.c ”. Åbn den og brug følgende kode. I denne kode har vi brugt execv på en bestemt måde, der er citeret nedenfor.

Execv (“./ sample4copy ”, args);

Den første del indeholder den nye biblioteksti, og den anden del viser argumentarrayet som en parameter, vi har bestået.

Prøve 4.c

Først og fremmest har vi udskrevet den aktuelle proces-id. For det andet har vi oprettet et tegnarray med NULL til sidst til opsigelsen. For det tredje har vi kaldt sample4copy-funktionen.

Prøve4kopi.c

Når vi kalder exec-funktionen (), ændres procesbilledet. Nedenfor citeret billede nedenfor viser koden til sample4copy.c.

Her har vi kun brugt udskriftserklæringer for at få id'et for den aktuelle proces.

Outputtet fra de respektive koder kan opnås ved hjælp af følgende kommandoer.

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

Som vi har beskrevet tidligere, bruges “GCC” -ordet til at kompilere koden, og efter kompilering udføres koden med succes.

Ifølge billedet, PID for sample4.c-filen vises først, da den blev erklæret før exec-opkaldet. Derefter efter at exec () -funktionen kaldes, skal begge udskriftserklæringerne for fil sample4copy.c udføres, hvor getpid () bruges til at opnå procesens id.

Kodning med en gaffel i c

Fork () -funktionen opretter barneprocessen fra den overordnede proces. Den indeholder også to overskrifter, inklusive gaffeloplysningerne i den.

Syntaks:

Pid_t gaffel (ugyldig);

Vi kan bruge mandsiden til hjælp til brugen

$ mand gaffel

Eksempel: Overvej nu et eksempel ved at oprette en fil “sample3.c ”. Vi indtaster koden inde i filen. I henhold til koden har vi indstillet gaffelstatus som forkrank.

Prøve 3.c

Vi har brugt “if-else” -erklæringen til at anvende betingelsen. Her erklæres enkle udskriftskommandoer for at hjælpe med at forstå begrebet fork (). Forkrank erklæres først som 0 og derefter -1. Med en gaffel () er der nu to processer, der fungerer samtidigt. Output kan opnås ved hjælp af den samme kode, som brugt ovenfor i exec-eksemplet.

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

Outputtet viser, at den underordnede proces udføres tidligere end den overordnede, da den overordnede proces ventede. Ventefunktionen indebærer, at den får den overordnede funktion til at vente, medmindre en af ​​alle barnets processer afsluttes.

Gaffel- og Exec-systemopkald kollektivt

Her tager vi to filer med navnet “sample1.c "og" prøve2.c ”. Åbn først filsampl1.c og skriv koden, der er vedhæftet nedenfor i billedet. Vi har brugt fork () systemkald her; når barneprocessen oprettes, tildeles p 0. Mens du bruger exec-systemopkald, er prøven1.c erstattes med prøve2.c.

Prøve 1.c

Prøve2.c

I lighed med eksemplerne beskrevet ovenfor vil sample2-filen indeholde printf-udsagnene i den. I prøve1.c, den første udskrivningskommando udføres først, derefter kaldes gaffelfunktionen, når p == 0, så udføres underdel og prøve2.c-fil køres. Outputtet indeholder GCC for at kompilere begge filer. Her overordnet prøve1.c id og prøve2.id er anderledes, fordi de er forældre og barn.

Konklusion

I denne artikel har vi brugt både fork og exec separat og kollektivt for let at forstå brugen og konceptet. Jeg håber, at denne vejledning indeholder tilstrækkeligt indhold, der vil føre til adgang til at eskalere din viden.

Mus Sådan bruges Xdotool til at stimulere museklik og tastetryk i Linux
Sådan bruges Xdotool til at stimulere museklik og tastetryk i Linux
Xdotool er et gratis og open source kommandolinjeværktøj til simulering af museklik og tastetryk. Denne artikel dækker en kort vejledning om brug af x...
Mus Top 5 ergonomiske computermusprodukter til Linux
Top 5 ergonomiske computermusprodukter til Linux
Forårsager langvarig brug af computeren smerter i dit håndled eller fingre? Lider du af stive led og er konstant nødt til at ryste hænderne? Føler du ...
Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...