C programozás

A Lseek System Call használata a C-ben

A Lseek System Call használata a C-ben

A Lseek System hívást arra használták, hogy bizonyos karaktereket vagy adatokat olvasson egy fájlból, vagy írjon valamilyen tartalmat bármely fájl adott helyére. Ez azt jelenti, hogy olvashat vagy írhat a fájl tartalma közé.

Szintaxis:

Off_t lseek (int fd, off_t offset, int honnan);

Ehhez az „lseek” rendszerhíváshoz két fejlécfájlra van szükség, pl.g., „Sys / type.h ”és„ unistd.h ”. A lseek rendszerhíváshoz három paraméter szükséges. Az első az „fd”, amely fájlleíró. A második „eltolás”, a mutató elhelyezésére szolgál. A harmadik paraméter, a „honnan”, egy fájlmutató helyzetének meghatározására szolgál, pl.g., eleje, vége, közepe.

Manpages telepítése:

A rendszerhívásokkal kapcsolatos további információk ellenőrzéséhez telepítenie kell a manpages-dev csomagot. Ezért próbálja meg elindítani a Linux shell terminált a Ctrl + Alt + T parancsikon használatával, vagy keressen rá a tevékenység területéről. Miután sikeresen elindította a parancsterminált, hajtsa végre az alábbi apt install lekérdezést a manpages-dev könyvtár telepítéséhez. A telepítés folytatásához megköveteli az aktuális számla kódját. Írja be a jelszót, és érintse meg az Enter billentyűt az írógépen. Elindul a telepítés folyamata, és elkezdődik az információk gyűjtése.

$ sudo apt install manpages-dev

A telepítési folyamat várni fog egy kis időre. A telepítés befejezése után most ellenőrizheti az „lseek” paranccsal kapcsolatos információkat.  Írja be az alábbi „man 2” parancsot a rendszerhívás nevével együtt. Amint láthatja, az alábbi utasításban ellenőriztük a „lseek” előfordulását.

$ man 2 lseek

Az alábbiakban megnyílt a „lseek” rendszerhívás man oldala. Minden információt megtudhat róla.

Telepítse a GCC fordítót:

Itt az ideje, hogy telepítsük a GCC fordítót a C nyelvű fájlok fordításához. Tehát a telepítéshez egy nagyon egyszerű apt install parancsot kell használnia a shellben, miközben a fordító kiterjesztését kulcsszó névként használja.

$ sudo apt install gcc

A telepítés elvégzéséhez kevés időbe telik. A gcc csomag telepítése után a Linux rendszere készen áll arra, hogy c nyelvi fájlokat használjon benne.

01. példa:

Mielőtt elmélyülne a lseek rendszerhívás fogalmának megértésében, egy egyszerű fájltípussal kell elindítania. Indítsuk el a terminált, és próbáljuk meg az alábbi érintéses parancsot, hogy létrehozzunk egy egyszerű, „seek” nevű fájlt a Linux disztribúció saját könyvtárában.

$ touch keresés

Adjon hozzá néhány adatot a „seek” fájlhoz, és mentse el. Az alábbi egyszerű „cat” lekérdezéssel láthatja a fájl keresési tartalmát a parancssori shellben. A fájl tartalmában van néhány ábécé és szám, valamint a „*” jel.

$ macskakeresés

Hozzunk létre egy C típusú fájl tesztet.c ”a nano kulcsszó segítségével közvetlenül megnyithatja a Nano szerkesztővel. Ehhez próbálja meg végrehajtani az alábbi parancsot.

$ nano teszt.c

Ellenőrizzünk egy programot a lseek parancs nélkül. Megnyit egy nano szövegszerkesztőt, amelynek felső részén egy C típusú fájl található. Most írja be az alább látható kódot a képből a szerkesztő C fájljába. Az első 4 sor tartalmazza az „lseek” parancs végrehajtásához szükséges fejlécfájlokat. Ezt követően elindult a fő funkció. Ebben a fő módszerben egész és karakter típusú adatokat definiáltunk a további felhasználás céljából. A fő függvény harmadik sora a nyílt hívást használta a „seek” nevű fájl megnyitására, amelyet a fentiekben hoztunk létre, és az „O_RDWR” eltolást használtuk olvasási és írási engedélyekre. A fájl tartalma visszatért az “f” fájlleíróba. Ezt követően az első olvasási módszer hívást használtuk 12 karakteres adatok kiolvasására a keresési fájlból. Az írási funkcióval adatokat írtak a képernyőre. Egy másik olvasási paranccsal kapta meg a következő 12 karaktert az „f” fájlleíróból, és az írási parancs beolvassa a következő 12 karaktert a kimeneti képernyőre. Ebből feltételezhetjük, hogy a kimenet összesen 24 karaktert mutat a „seek” fájlból. Nyomja meg a Ctrl + S billentyűkombinációt a fájl mentéséhez, majd próbálja meg bezárni a Ctrl + X billentyűkombinációt.

Csak állítsuk össze a „tesztet.c ”fájlt az alábbi GCC fordító paranccsal.

$ gcc teszt.c

Most futtassa a „teszt.c ”fájl a C kód kimenetének ellenőrzéséhez az alábbiak szerint. A kimenet az alábbiak szerint jelenítette meg a fájlkeresés 24 karakteres tartalmát.

$ ./ a.ki

Használjuk a kódban található „lseek” parancsot a rendszerhívás kimenetének ellenőrzésére. Tehát nyissa meg ugyanazt a tesztet.c fájlt az alábbi nano paranccsal.

$ nano teszt.c

Frissítse a kódot úgy, ahogy van. Ezúttal a tartalmi fájl 6 karakterét használtuk olvasásra és írásra. A lseek paranccsal a következő 5 karaktert kihagyta a tartalomfájlból, és a „SEEK_CUR” eltolással ugorhat a következő karakterekre.

Fordítsuk le újra ezt a kódot.

$ gcc teszt.c

A C kód kimenete az a használatával.out parancs az első 6 karaktert mutatja, majd kihagyja a következő 5 karaktert, majd megmutatja az egymást követő következő 6 karaktert.

$ ./ a.ki

02. példa:

Néhány változtatáshoz változtassuk meg a kódot. Először nyissa meg a fájlt.

$ nano teszt.c

Most a „SEEK_SET” eltolással fogjuk megmondani az „lseek” rendszerhívásnak, hogy a következő 6 karakter megjelenjen a karakterlánc 10. pozíciójából.

Fordítsa le a C fájlt.

$ gcc teszt.c

A kimeneti parancs a.out megmutatta egy karakterlánc 10. indexének 6 karakterét.

Következtetés:

Ez az útmutató néhány egyszerű példát tartalmaz az „lseek” rendszerhívás parancs használatával a kívánt tartalom vagy adatok ellenőrzéséhez vagy megjelenítéséhez.

Hogyan lehet rögzíteni és streamelni a játékmenetét Linuxon
Korábban a játékokat csak hobbinak tekintették, de az idő múlásával a játékipar hatalmas növekedést ért el a technológia és a játékosok száma szempont...
A legjobb játékok kézi követéssel
Az Oculus Quest nemrégiben bemutatta a vezérlés nélküli kézi követés nagyszerű ötletét. Az egyre növekvő számú játékkal és tevékenységgel, amelyek tám...
Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...