A rendszerhívásokat a Linux disztribúcióiban használják arra, hogy kaput biztosítsanak a Linux operációs rendszeren és a programokon belül. A Linux operációs rendszer a Glibc könyvtár segítségével támogatja a benne lévő rendszerhívásokat a C nyelv használata közben. Sokkal több módszer létezik a rendszerhívások használatára is. Ebben a cikk útmutatóban a nyílt rendszerhívást tárgyaljuk a Linux rendszerben. Az „Open” rendszerhívást alkalmazták az útvonalban megadott fájl gyors megnyitására. Ez tudatta velünk a felhasználó által létrehozott fájl fájlleíróját. Az Ubuntu 20-at használtuk.04, hogy kézhez kapjon egy „nyitott” rendszerhívást.
Telepítse a Könyvtárakat
A C nyelv előfeltételként további könyvtárcsomagokat igényel. Először telepítenie kell a manpages-dev csomagot a rendszerhívásokkal kapcsolatos információk ellenőrzéséhez. Nyissa meg a parancssori terminált a tevékenység területéről, és hajtsa végre az alábbi utasításokat a manpages telepítéséhez.
$ sudo apt install manpages-dev
A telepítés befejezésének kimenete az alábbiakban található.
Most ellenőrizzük a nyitott rendszerhívást a „man” paranccsal az alábbiak szerint.
$ man 2 nyitva
Az „Open” rendszerhívás kimeneti man oldala az alábbiakban látható. Megtekintheti a vele kapcsolatos további információkat. A kilépéshez nyomja meg a „q” gombot.
A fenti szintaxis megmutatja a rendszerhívásokhoz hozzáadandó szükséges könyvtárak első három sorát. Három szintaxis áll rendelkezésre a nyílt rendszerű híváshoz. Az első szintaxis az „elérési utat” mutatja, amely a megnyitandó fájl neve. A második paraméter, a „flags” egy fájl módját mutatja, pl.g., olvasni vagy írni. A második szintaxis akkor használható, ha a fájl nem létezik. A paraméter mód a fájl jogosultságainak megjelenítésére szolgál.
Itt az ideje telepíteni a GCC fordítót a C kód hibakereséséhez az Ubuntu 20-ban.04 Linux disztribúció. Ehhez hajtsa végre az alábbi utasítást a shellben.
$ sudo apt install gcc
A GCC fordító telepítésének folytatásához meg kell érintenie az „Y” -t, különben nyomja meg az „n” gombot a telepítés bezárásához. Tehát nyomja meg az „y” gombot, és nyomja meg az Entert a folytatáshoz.
A befejezés kimenete az alábbiakban látható.
01. példa
Nézzük meg az „Open” rendszerhívás nagyon egyszerű példáját. Először is nyissa meg a parancsértelmezőt, és hozzon létre egy új szövegfájlt.txt ”az egyszerű érintés paranccsal az alábbiak szerint:
$ érintésteszt.txt
Adjon hozzá néhány adatot manuálisan. Az alábbi fájl paranccsal láthatja az adatokat egy fájlban.
$ macska teszt.txt
Most hozzunk létre egy új C fájlt a shellben lévő nano parancs segítségével, az alábbiak szerint.
$ nano új.c
Az alábbi GNU nano fájl megnyílik. Be kell írnia az alábbi C nyelvi kódot. Láthatja, hogy hozzáadtuk a szükséges könyvtárcsomagokat a C-kód megfelelő végrehajtásához. Ezt követően meghatároztuk a fő funkciót az Open system híváson való munkához. Két egész változót deklaráltunk. Az „n” változó a pufferértékek számlálására szolgál, az „fd” a fájlleíróra. A karakter típusú puffertömböt „buf” -nak nyilvánítottuk, amelynek mérete 50. A nyílt rendszerhívást használták a tartalom leolvasására a „test” fájlból.txt ”, és küldje vissza a fájlleírónak. Az „O_RDONLY” kifejezést olvasási célokra használták. A következő sor az olvasott rendszerhívást mutatja, hogy összegyűjtse a 10 bájtot a pufferből, és adja vissza az n egész számba. Ezenkívül az írási parancsot használták a tartalom vagy a puffer adatok fájlleíróba írására, amely a kimeneti képernyő. Mentse el ezt a fájlt a Ctrl + S gombbal, és zárja be a Ctrl + X paranccsal.
#include#include
#include
#include
int main ()
int n, fd;
char buf [50];
fd = nyitott („teszt.txt ”, O_RDONLY);
n = olvas (fd, buf, 10);
írja (1, buf, 10);
Először állítsuk össze egy nyílt rendszerhívás C-kódját az alábbi gcc paranccsal.
$ gcc new.c
Itt az ideje ellenőrizni a nyitott rendszerhívás C-kódjának kimenetét. Használjuk az alábbiakat a.out parancs a héjban. A kimenet megjeleníti a 10 bájtot egy fájl „teszt” tartalmából.txt ”.
$ ./ a.ki
Vegyünk egy másik példát, amellyel egy fájl tartalmát egy másik fájlba írhatjuk egy Open system hívás segítségével. Új C fájl létrehozása a nano paranccsal az alábbiak szerint.
$ nano új.c
Tehát ugyanazt a kódot vegye be, kisebb változtatásokkal. Meghatároztunk egy másik fájlleírót a kódban: "fd1". Az összes kód ugyanaz, kivéve egy további sort. A kód második utolsó sora a nyílt rendszerhívást használta egy új „cél” nevű fájl létrehozására az O_CREAT és az üzemmód használatával, csak írásban O_WRONLY néven. A 0642 mutatja a fájlhoz rendelt jogosultságokat. És a fájl visszatért egy új fájlleíróba. A következő sor egy parancsot mutat be, amely a tartalom bájtjait írja le a pufferbe fájlleírója szerint. Mentse a fájlt, és zárja be.
A C nyelvi fájl hibakereséséhez hajtsa végre a gcc compile parancsot.
$ gcc new.cA C-kód kimenetének megjelenítéséhez próbálkozzon a.ki utasítás a héjban az alábbiak szerint. Nincs kimenet, mert a kimenetet átirányították az újonnan létrehozott „target” fájlba.
$ ./ a.kiEllenőrizzük a fájlcél adatait a cat paranccsal. A kimenet azt mutatja, hogy a fájlban 20 bájt van.
$ macska cél
Következtetés
A fenti oktatóanyagban elmagyaráztuk Önnek, hogy használjon nyílt rendszerhívást C nyelven a gcc fordító használatával. Az útmutatóban ismertetett különféle példák segítségével a kívánt program megvalósításához vezethet.