C programozás

Az Fsync System Call használata a C-ben

Az Fsync System Call használata a C-ben

Az fsync segítségével a fájl magállapotát bármilyen tárolóeszközzel koordinálhatja. Az fsync () rendszerhívás átengedi („kiöblíti”) az összes megváltozott magtartalmat (azaz.e., megváltozott puffer) a fájlleíró fd lemezlemezhez (vagy bármely más örök tároló eszközhöz), ahol az ilyen fájl megmarad. Ez még a fájl részleteit is kitisztítja. Az fsync rendszerhívás egyetlen fájlon működik. A fájl minden frissítése törlődik. Ha több feladatot szerkesztenek ugyanabba a fájlba, az fsync rendszerhívása fel lesz függesztve, mielőtt az összes frissítés átkerülne a lemezre. Ha a rendszer bejelenti, hogy az átalakítás sikeres volt, a hívást blokkoljuk. Az fsync () használata nem garantálja, hogy esetleg a fájl felvétele a fájlrendszerbe is belépett a lemezre. Ehhez azonban a mappa fájlleírójában egy megfelelő fsync () szükséges.

Telepítési előfeltételek:

Tehát az fsync rendszerhíváshoz szükség van néhány könyvtár telepítésére a munkához. Ha valaki meg akarja nézni az fsync paranccsal kapcsolatos további információkat, akkor telepítenie kell a manpages-dev csomagokat a Linux rendszerére. Tehát meglátjuk, hogyan kell ezt megtenni. Használja a Ctrl + Alt + T billentyűt a billentyűzetről a Linux parancssori terminál elindításához. Most a manpages-dev csomag telepítéséhez próbálja ki az alábbi apt install parancsot, majd egy „manpages-dev” nevű csomagot. A telepítés folyamatához meg kell adnia a fiók jelszavát a Linux folytatásához. Tehát írja be jelenlegi fiókjának Linux jelszavát, és nyomja meg az Enter billentyűt a billentyűzeten. Gyorsan elindítja a Linux rendszer telepítését és konfigurálását. Dőljön hátra, amíg befejezi a telepítési folyamatot.

$ sudo apt install manpages-dev

A telepítés után az alábbi paranccsal ellenőrizheti az fsync rendszerrel kapcsolatos információkat.

$ man 2 fsync

A man parancs kimenete az alábbiakban található. Az ezzel kapcsolatos információkat elolvashatja, hogy megértse az „fsync” rendszerhívás fogalmát a Linux rendszerben. Az ablak bezárásához nyomja meg a billentyűzeten található „q” gombot.

Az fsync rendszerhívás azonosítójának, a GCC fordítójának további előfeltétele. Ez azért van, mert az fsync rendszerhívást a C nyelven belül használjuk. Tehát a C nyelvi kód futtatásához és fordításához telepítenünk kell egy fordító csomagot a rendszerünkbe. Tehát itt van egy GCC fordító. Telepítheti az alábbi nagyon egyszerű sudo apt paranccsal. Néhány perc alatt befejezi a telepítést, és könnyedén beírhatja a C kódokat fájlokba.

$ sudo apt install gcc

Példa:

Kezdjünk dolgozni az fsync paranccsal, hogy jól megértsük. Először is létre kell hoznia egy C típusú fájlt a parancssori héj nano szerkesztőjével. Ehhez próbálja meg futtatni az alábbi egyszerű lekérdezést a shellben.

$ nano új.c

A fájl létrehozása és megnyitása után itt az ideje egy kis C kódot írni. Tehát az alábbi hosszú kódot láthatja a nano fájlban. Az első 7 sor fejlécfájlokkal rendelkezik, amelyeket be kell illeszteni a szerkesztőfájlba az „fsync” rendszerhívás megfelelő működéséhez. Ezen fejlécfájlok után az egész visszatérési típussal rendelkező fő függvényt „int” -ként definiáltuk. Ez a funkció két paramétert tartalmaz. Az egyikük egész típusú, a másik pedig egy karakter típusú tömb. A fő függvény terében deklaráltunk egy karaktertípus karakterláncot „* str”, és meghatároztunk hozzá egy karakterlánc-típust. Ezután két egész típusú változót is deklaráltunk, amelyeket fájlleírókként használunk a további sorokban. A következő sorban a rendszerhívás létrehozása funkcióval létrehoztunk egy új fájlt, amelynek neve „teszt.txt ”, valamint olvasási és írási jogosultságokat a paraméter eltolásaként. Ezt a fájltartalmat visszaküldtük az “fd” fájlleíróba. Ebben a C kódban definiáltuk az if állítást. Ha a fájlleíró értéke vagy indexmutatója „-1”, akkor a hibát el fogja hívni a creat () függvény új fájl létrehozásához. Az „fd” leíró, mint „-1”, azt jelenti, hogy a mutató -1 pozícióban van.

Az exit () függvény meghívásra kerül az if utasítás bezárása előtt. Ezután az írási metódus hívást alkalmaztuk, hogy összegyűjtsük a karakterlánc értékét a pufferből, és beírjuk a „test” fájlba.txt ”az„ fd ”fájlleíróval. Ez az adat visszakerült a „ret” változóba. Ha a „Ret” változó értéke kisebb, mint -1, ez azt jelenti, hogy az adatokat nem írták fájlba. Tehát újra meg kell hívnia az írási függvényt, és kilépnie az if utasításból. Meghatároztuk az fsync rendszerhívást, és paraméterértékként megadtuk neki az „fd” fájlleírót, hogy szinkronizáljuk a fájlleírót egy lemez eszközzel. A „bezárás” módszer meghívásakor gyorsan beírja az adatokat egy lemezmeghajtóra, és bezárja a fájlleírót. Ezt követően a fő funkció bezárul. Mentse el ezt a fájlt a „Ctrl + S” billentyűparancs segítségével, és zárja be az „új” fájlt.c ”a„ Ctrl + X ”gyorsbillentyűvel.

A nano fájl bezárása után itt az ideje, hogy lefordítsa a fent bemutatott kódot. A kód fordításához a gcc fordítót kell használnunk. Tehát hajtsa végre az alábbi gcc lekérdezést az „new.c ”fájl.

$ gcc new.c

Most végre kell hajtanunk ezt a kódot az egyszerű a használatával.out parancs a héjban az alábbiak szerint. Ez a parancs egyszerűen végrehajtja a kódot, és nem ad vissza semmit, de az adatokat a folyamat hátuljába írták egy lemezmeghajtóra.

$ ./ a.ki

Ellenőrizze a C-kódban létrehozott fájlt, és tartalmaz egy karakterlánc-értéket.

$ macska teszt.txt

Következtetés

Röviden tárgyaltunk egy nagyon egyszerű és lineáris példát az fsync rendszerhívásról, hogy megértsük annak fogalmát.Remélem, hogy most könnyedén használhatja az fsync rendszerhívást Linux alatt.

Telepítse a legújabb Dolphin Emulator for Gamecube & Wii szoftvert Linuxra
A Dolphin Emulator segítségével a kiválasztott Gamecube & Wii játékokat játszhatja Linux személyi számítógépeken (PC). Mivel a Dolphin Emulator szaba...
A GameConqueror Cheat Engine használata Linux alatt
A cikk tartalmaz egy útmutatót a GameConqueror csaló motor Linux alatt történő használatáról. Sok olyan felhasználó, aki Windows-on játszik játékot, g...
A legjobb játékkonzol emulátorok Linuxhoz
Ez a cikk felsorolja a Linux számára elérhető népszerű játékkonzol-emulációs szoftvereket. Az emuláció egy szoftver-kompatibilitási réteg, amely játék...