Hvordan bruke Open System Call i C

How Use Open System Call 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 artikkelguiden vil vi diskutere det åpne systemanropet i Linux -systemet. Åpne systemanropet har blitt brukt til å åpne filen som er spesifisert i banen raskt. Den ga oss beskjed om filbeskrivelsen til en brukeropprettet fil. Vi har brukt Ubuntu 20.04 for å få et praktisk åpent systemanrop.

Installer biblioteker

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







$ sudo apt installer manpages-dev



Utdataene for ferdigstillelse av installasjonen er gitt nedenfor.







Nå vil vi se etter det åpne systemanropet ved å bruke kommandoen man som nedenfor.

$ mann2åpen



Utmatingssiden for Open system -anropet har blitt vist nedenfor. Du kan se tilleggsinformasjonen angående den. Trykk på q -knappen for å gå ut av den.

Ovenstående syntaks 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 banenavnet, som er navnet på en fil som skal åpnes. Den andre parameteren, flagg, viser modusen til en fil, f.eks. Lese eller skrive. Den andre syntaksen kan brukes når filen ikke eksisterer. Parametermodus brukes til å vise rettighetene til filen.

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

$ sudo apt installer 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.

Utdataene for ferdigstillelsen er vist nedenfor.

Eksempel 01

La oss se på det veldig enkle eksemplet på et åpent systemanrop. Først av alt, åpne kommandoskallet og opprett en ny tekstfil test.txt ved hjelp av den enkle berøringskommandoen som følger:

$ta påtest.txt

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

$katttest.txt

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

$nanonytt. c

GNU nano -filen nedenfor vil bli åpnet. Du må skrive inn C -språkkoden nedenfor. Du kan se at vi har lagt til de nødvendige bibliotekpakkene for at C -koden skal kunne kjøres riktig. Etter det har vi definert hovedfunksjonen for å arbeide med et åpent systemanrop. Vi har deklarert to heltallsvariabler. Variabelen n brukes til å telle bufferverdier, og fd brukes til filbeskrivelsen. Vi har erklært buffertypen tegntype som buf med størrelse 50. Den åpne systemanropet har blitt brukt til å lese innholdet fra filen test.txt og returnere det til filbeskrivelsen. O_RDONLY har blitt brukt til lesing. Den neste linjen viser lese systemanropet for å samle de 10 byte fra bufferen og returnere den til heltallet n. Skrivekommandoen har også blitt brukt til å skrive innholdet eller bufferdataene til filbeskrivelsen, som er utdataskjermen I vårt tilfelle akkurat nå. Lagre denne filen med Ctrl+S og lukk den med Ctrl+X -kommandoen.

#inkludere
#inkludere
#inkludere
#inkludere

inthoved-()
{
intn,fd;
røyebuf[femti];
fd=åpen(test.tekst,O_RDONLY);
n=lese(fd,buf, 10);
skrive(1 ,buf, 10);

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

$gccnytt. c

Nå er det på tide å sjekke utgangen for C -koden for et åpent systemanrop. La oss bruke kommandoen a.out nedenfor i skallet. Utgangen viser de 10 byte fra innholdet i en fil test.txt.

$./til.ute

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

$ nano nytt.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 å bruke O_CREAT og modusen, skrivebeskyttet som O_WRONLY. 0642 viser privilegiene som er tilordnet denne filen. Og filen er returnert til en ny filbeskrivelse. Den neste linjen har vist en kommando for å skrive innholdsbytes i bufferen i henhold til filbeskrivelsen. Lagre filen og lukk den.

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

$ gcc nytt.c

For å vise utdataene fra C -koden, prøv a.out -instruksjonen i skallet som nedenfor. Det er ingen utdata fordi utdata er blitt omdirigert til det nyopprettede filmålet.

$./til.ute

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

$ kattmål

Konklusjon

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