C Programmering

Hvordan bruke Open System Call i C

Hvordan bruke Open System Call i C

Systemanropene brukes i Linux-distribusjonene for å gi en døråpning i Linux OS og programmene. Linux-operativsystemet bruker Glibc-biblioteket til å støtte systemanrop i det mens du bruker C-språket. Det er mange flere måter å bruke systemanrop også. I denne artikkelen vil vi diskutere det åpne systemanropet i Linux-systemet. "Åpne" systemanrop har blitt brukt til å åpne filen som er spesifisert i banen raskt. Den gir oss beskjed om filbeskrivelsen til en brukeropprettet fil. Vi har brukt Ubuntu 20.04 for å få en praktisk "Open" systemanrop.

Installer biblioteker

C-språket krever at noen ekstra bibliotekspakker installeres som forutsetninger. Først og fremst må du installere manpages-dev-pakken for å sjekke informasjonen om systemanrop. Åpne kommandolinjeterminalen fra aktivitetsområdet og utfør instruksjonene nedenfor for å installere manpages.

$ sudo apt installer manpages-dev

Resultatet for fullføring av installasjonen er gitt nedenfor.

Nå vil vi se etter det åpne systemanropet ved å bruke kommandoen “mann” som nedenfor.

$ mann 2 åpen

Utgangssiden for "Åpne" systemanrop er vist nedenfor. Du kan se tilleggsinformasjonen om den. Trykk på “q” -knappen for å avslutte den.

Syntaksen ovenfor viser de tre første linjene med nødvendige biblioteker som skal legges til for systemanrop. Det er tre syntakser tilgjengelig for det åpne systemanropet. Den første syntaksen viser "stienavn", som er navnet på en fil som skal åpnes. Den andre parameteren "flagg" viser modusen til en fil, f.eks.g., lese eller skrive. Den andre syntaksen kan brukes når filen ikke eksisterer. Parametermodus brukes til å vise rettighetene på filen.

Nå er det på tide å installere GCC-kompilatoren for feilsøking av C-kode i Ubuntu 20.04 Linux-distribusjon. For det, utfør instruksjonen nedenfor i skallet for å gjøre det.

$ sudo apt installere gcc

Det krever at du trykker på “Y” for å fortsette å installere GCC kompilatoren, ellers trykker du på “n” -knappen for å lukke installasjonen. Så trykk på “y” -knappen og trykk Enter for å fortsette.

Resultatet for ferdigstillelsen er vist nedenfor.

Eksempel 01

La oss se på det veldig enkle eksemplet på et "Åpent" systemanrop. For det første åpner du kommandoskallet og oppretter en ny tekstfil “test.txt ”ved å bruke den enkle berøringskommandoen som følger:

$ berøringstest.tekst

Legg til noen data manuelt. Du kan se dataene i en fil ved hjelp av kattkommandoen nedenfor.

$ kattest.tekst

La oss nå opprette en ny C-fil ved hjelp av en nano-kommando i skallet, som vist nedenfor.

$ nano ny.c

GNU nano-filen nedenfor åpnes. Du må skrive under C-språkkoden i den. Du kan se at vi har lagt til nødvendige bibliotekspakker for at C-koden skal kunne kjøres riktig. Etter det har vi definert hovedfunksjonen for å jobbe med et åpent systemanrop. Vi har deklarert to heltallvariabler. Variabelen “n” brukes til å telle bufferverdier, og “fd” brukes til filbeskrivelsen. Vi har erklært buffertypen for karaktertype som "buf" med størrelse 50. Det åpne systemanropet har blitt brukt til å lese innholdet fra filtesten.txt ”og returner den til filbeskrivelsen. “O_RDONLY” har blitt brukt til leseformål. Den neste linjen viser det avleste systemanropet for å samle de 10 byte fra bufferen og returnere det til heltallet n. Skrivekommandoen har også blitt brukt til å skrive innholdet eller bufferdataene i filbeskrivelsen, som er utgangsskjermen. I vårt tilfelle akkurat nå. Lagre denne filen ved hjelp av Ctrl + S og lukk den med Ctrl + X-kommandoen.

#inkludere
#inkludere
#inkludere
#inkludere
int main ()

int n, fd;
røye buf [50];
fd = åpen (“test.txt ”, O_RDONLY);
n = lese (fd, buf, 10);
skriv (1, buf, 10);

La oss først kompilere C-koden for et åpent systemanrop ved hjelp av gcc-kommandoen nedenfor.

$ gcc ny.c

Nå er det på tide å sjekke utgangen for C-koden for en åpen systemanrop. La oss bruke nedenstående a.ut kommando i skallet. Utgangen viser de 10 byte fra innholdet i en filtest.tekst".

$ ./en.ute

La oss ta et annet eksempel for å skrive innholdet i en fil i en annen fil ved hjelp av et åpent systemanrop. For å opprette en ny C-fil ved hjelp av nano-kommandoen som nedenfor.

$ nano ny.c

Så ta den samme koden med en mindre endring i den. Vi har definert en annen filbeskrivelse i koden som “fd1”. All koden er den samme bortsett fra en ekstra linje. Den nest siste linjen i koden har brukt det åpne systemanropet til å opprette en ny fil med navnet “target” ved hjelp av O_CREAT og modus, bare skrive som O_WRONLY. 0642 viser rettighetene som er tildelt denne filen. Og filen er returnert til en ny filbeskrivelse. Den neste linjen har vist en kommando for å skrive byte med innhold i bufferen i henhold til filbeskrivelsen. Lagre filen og lukk den.

Utfør gcc compile-kommandoen for å feilsøke C-språkfilen.

$ gcc ny.c

For å vise utdata av C-kode, prøv a.instruksjon i skallet som nedenfor. Det er ingen utdata fordi utdataene er omdirigert til den nylig opprettede filen "target".

$ ./en.ute

La oss sjekke dataene for et filmål ved hjelp av cat-kommandoen. Utgangen viser at filen har 20 byte i seg.

$ kattmål

Konklusjon

I veiledningen ovenfor forklarte vi deg å bruke et åpent systemanrop på C-språk ved å bruke gcc-kompilatoren. Ved hjelp av forskjellige eksempler som er forklart i denne guiden, vil du lede deg til å implementere ønsket program.

Beste kommandolinjespill for Linux
Kommandolinjen er ikke bare din største allierte når du bruker Linux, den kan også være kilden til underholdning fordi du kan bruke den til å spille m...
Beste Gamepad Mapping Apps for Linux
Hvis du liker å spille spill på Linux med en gamepad i stedet for et vanlig tastatur- og musinngangssystem, er det noen nyttige apper for deg. Mange P...
Nyttige verktøy for Linux-spillere
Hvis du liker å spille spill på Linux, er sjansen stor for at du har brukt apper og verktøy som Wine, Lutris og OBS Studio for å forbedre spilloppleve...