Sådan bruges Open System Call i C

How Use Open System Call C



Systemopkaldene bruges i Linux -distributionerne til at give en døråbning inden for Linux OS og programmerne. Linux -operativsystemet bruger Glibc -biblioteket til at understøtte systemopkald i det, mens du bruger C -sproget. Der er også mange flere måder at bruge systemopkald på. I denne artikelguide vil vi diskutere det åbne systemopkald i Linux -systemet. Det åbne systemopkald er blevet brugt til hurtigt at åbne den fil, der er angivet i stien. Det gav os besked om filbeskrivelsen af ​​en brugeroprettet fil. Vi har brugt Ubuntu 20.04 til at få et praktisk åbent systemopkald.

Installer biblioteker

C -sproget kræver, at nogle ekstra bibliotekspakker installeres som forudsætninger. Først og fremmest skal du installere pakken manpages-dev for at kontrollere oplysningerne om systemopkald. Åbn kommandolinjeterminalen fra aktivitetsområdet, og udfør nedenstående instruktion for at installere manpages.







$ sudo apt installer manpages-dev



Output til færdiggørelse af installationen er angivet nedenfor.







Nu vil vi kontrollere det åbne systemopkald ved hjælp af kommandoen man som nedenfor.

$ mand2åben



Output -man -siden for Open system call er vist nedenfor. Du kan se yderligere oplysninger om det. Tryk på knappen q for at afslutte den.

Ovenstående syntaks viser de første tre linjer med nødvendige biblioteker, der skal tilføjes til systemopkald. Der er tre syntakser til rådighed for det åbne systemopkald. Den første syntaks viser stinavnet, som er navnet på en fil, der skal åbnes. Den anden parameter, flag, viser tilstanden for en fil, f.eks. Læse eller skrive. Den anden syntaks kan bruges, når filen ikke findes. Parametertilstanden bruges til at vise rettighederne på filen.

Nu er det tid til at installere GCC -kompilatoren til fejlfinding af C -kode i Ubuntu 20.04 Linux -distributionen. For at udføre nedenstående instruktion i skallen for at gøre det.

$ sudo apt installer gcc

Det kræver, at du trykker på Y for at fortsætte med at installere GCC -kompilatoren, ellers skal du trykke på knappen n for at lukke installationen. Så tryk på knappen y, og tryk på Enter for at fortsætte.

Output for færdiggørelsen er vist nedenfor.

Eksempel 01

Lad os se på det meget enkle eksempel på et åbent systemopkald. Først og fremmest skal du åbne kommandoskallen og oprette en ny tekstfil test.txt ved hjælp af kommandoen simple touch som følger:

$røre vedtest.txt

Tilføj nogle data manuelt. Du kan se dataene i en fil ved hjælp af kommandoen nedenfor.

$kattest.txt

Lad os nu oprette en ny C -fil ved hjælp af en nano -kommando i skallen, som vist nedenfor.

$nanony. c

Nedenstående GNU nano -fil åbnes. Du skal indtaste nedenstående C -sprogkode i den. Du kan se, at vi har tilføjet de nødvendige bibliotekspakker til, at C -koden udføres korrekt. Derefter har vi defineret hovedfunktionen til at arbejde på et åbent systemopkald. Vi har erklæret to heltalsvariabler. Variablen n bruges til at tælle bufferværdier, og fd bruges til filbeskrivelsen. Vi har erklæret tegntype buffer array som buf med størrelse 50. Det åbne systemopkald er blevet brugt til at læse indholdet fra filen test.txt og returnere det til filbeskrivelsen. O_RDONLY er blevet brugt til læseformål. Den næste linje viser læsesystemopkaldet for at indsamle de 10 bytes fra bufferen og returnere det til heltalet n. Skrivekommandoen er også blevet brugt til at skrive indholdet eller bufferdataene i filbeskrivelsen, som er outputskærmen I vores tilfælde lige nu. Gem denne fil ved hjælp af Ctrl+S, og luk den ved hjælp af kommandoen Ctrl+X.

#omfatte
#omfatte
#omfatte
#omfatte

intvigtigste()
{
intn,fd;
forkælelsebuf[halvtreds];
fd=åben(prøve.txt,O_RDONLY);
n=Læs(fd,buf, 10);
skrive(1 ,buf, 10);

Lad os først kompilere C -koden til et åbent systemopkald ved hjælp af gcc -kommandoen herunder.

$gccny. c

Nu er det tid til at kontrollere output for C -koden til et åbent systemopkald. Lad os bruge nedenstående a.out -kommando i skallen. Outputtet viser de 10 bytes fra indholdet af en fil test.txt.

$./til.ud

Lad os tage et andet eksempel til at skrive indholdet af en fil til en anden fil ved hjælp af et åbent systemopkald. For at oprette en ny C -fil ved hjælp af nano -kommandoen som nedenfor.

$ nano nyt.c

Så tag den samme kode med en mindre ændring i den. Vi har defineret en anden filbeskrivelse i koden som fd1. Al koden er den samme bortset fra en ekstra linje. Den næstsidste linje i koden har brugt det åbne systemopkald til at oprette en ny fil med navnet target ved hjælp af O_CREAT og tilstanden, skrive-kun som O_WRONLY. 0642 viser de rettigheder, der er tildelt denne fil. Og filen er blevet returneret til en ny filbeskrivelse. Den næste linje har vist en kommando til at skrive bytes af indhold i bufferen i henhold til dens filbeskrivelse. Gem filen, og luk den.

Udfør kommandoen gcc compile for at fejlsøge C -sprogfilen.

$ gcc ny.c

For at vise output fra C -kode, prøv a.out -instruktionen i skallen som nedenfor. Der er ingen output, fordi output er blevet omdirigeret til det nyoprettede filmål.

$./til.ud

Lad os kontrollere dataene for et filmål ved hjælp af kommandoen cat. Outputtet viser, at filen har 20 bytes.

$ kat mål

Konklusion

I ovenstående vejledning forklarede vi dig om at bruge et åbent systemopkald på C -sprog ved hjælp af gcc -kompilatoren. Ved hjælp af forskellige eksempler forklaret i denne vejledning vil du føre dig til at implementere dit ønskede program.