C programozás

A nyílt rendszerhívás használata a C-ben

A nyílt rendszerhívás használata a C-ben

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.c

A 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.ki

Ellenő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.

Microsoft Sculpt Touch vezeték nélküli egér áttekintés
Nemrég olvastam a Microsoft Sculpt Touch vezeték nélküli egér és úgy döntött, hogy megveszi. Egy ideig használat után úgy döntöttem, hogy megosztom ve...
AppyMouse képernyős Trackpad és egérmutató a Windows táblagépekhez
A táblagép-felhasználók gyakran hiányolják az egérmutatót, különösen akkor, ha szokták használni a laptopokat. Az érintőképernyős okostelefonok és táb...
Az egér középső gombja nem működik a Windows 10 rendszerben
A középső egérgomb segít átgörgetni a hosszú weboldalakat és a sok adatot tartalmazó képernyőket. Ha ez leáll, akkor a billentyűzet segítségével görge...