C Programování

Jak používat systémová volání Fsync v C

Jak používat systémová volání Fsync v C

Fsync se používá ke koordinaci stavu jádra souboru s jakýmkoli úložným zařízením. Systémové volání fsync () předává („propláchne“) veškerý změněný obsah jádra (i.E., změněná vyrovnávací paměť pro) deskriptor souboru fd na diskový stroj (nebo jiné trvalé zařízení pro ukládání), kde takový soubor zůstává. Dokonce vyčistí podrobnosti souboru. Systémové volání fsync funguje na jednom souboru. Všechny aktualizace souboru budou vyprázdněny. Pokud je ve stejném souboru upraveno několik úkolů, bude systémové volání fsync pozastaveno před přenesením všech aktualizací na disk. Pokud systém oznámí, že je převod úspěšný, bude hovor blokován. Použití fsync () nezaručuje, že se možná na disk dostalo i zahrnutí souboru do souborového systému. K tomu je však zapotřebí vhodný fsync () v deskriptoru souboru složky.

Předpoklady instalace:

Systémové volání fsync tedy vyžaduje, aby byly nainstalovány některé knihovny, aby na něm fungovaly. Pokud někdo chce zkontrolovat další informace týkající se příkazu fsync, musí mít ve svém systému Linux nainstalované balíčky manpages-dev. Uvidíme, jak na to. Pomocí klávesy Ctrl + Alt + T na klávesnici spusťte terminál příkazového řádku systému Linux. Chcete-li nyní nainstalovat balíček manpages-dev, vyzkoušejte následující následující příkaz apt install následovaný balíčkem „manpages-dev“. Proces instalace bude vyžadovat heslo vašeho účtu pro Linux. Zadejte tedy své aktuální heslo k účtu Linux a stiskněte klávesu Enter na klávesnici. Rychle zahájí instalaci a konfiguraci stránek ve vašem systému Linux. Posaďte se, dokud nedokončí proces instalace.

$ sudo apt install manpages-dev

Po instalaci můžete pomocí níže uvedeného příkazu zkontrolovat informace o systému fsync.

$ man 2 fsync

Výstup příkazu man je připojen níže. Můžete si přečíst jakékoli informace, které se ho týkají, abyste porozuměli konceptu systémového volání „fsync“ v systému Linux. Stisknutím klávesy „q“ na klávesnici toto okno opustíte.

Dalším předpokladem potřebným k použití ID systému fsync je ID kompilátoru GCC. Je to proto, že používáme systémové volání fsync v jazyce C. Abychom tedy mohli spustit a zkompilovat kód jazyka C, musíme mít v našem systému nainstalovaný nějaký balíček kompilátoru. Takže tady máme kompilátor GCC. Můžete jej nainstalovat pomocí velmi jednoduchého příkazu sudo apt, jak je uvedeno níže. Dokončí instalaci za pár minut a vy můžete snadno psát C kódy do souborů.

$ sudo apt nainstalovat gcc

Příklad:

Začněme pracovat na příkazu fsync, abychom tomu dobře porozuměli. Nejprve musíte vytvořit soubor typu C pomocí nano editoru v prostředí příkazového řádku. Za tímto účelem zkuste spustit následující jednoduchý dotaz v shellu.

$ nano nové.C

Poté, co byl soubor vytvořen a otevřen, je čas napsat nějaký C kód. Níže uvedený dlouhý kód tedy vidíte v souboru nano. Prvních 7 řádků obsahuje soubory záhlaví, které je nutné zahrnout do souboru editoru pro správné fungování systémového volání „fsync“. Po těchto hlavičkových souborech jsme definovali hlavní funkci s celočíselným návratovým typem jako „int“. Tato funkce obsahuje dva parametry. Jeden z nich je celočíselný typ a druhý je pole typu znaků. V prostoru hlavní funkce jsme deklarovali řetězec typu znaků „* str“ a definovali jsme pro něj hodnotu typu řetězce. Poté jsme také deklarovali dvě proměnné celočíselného typu, které budou použity jako deskriptory souborů v dalších řádcích. V dalším řádku jsme pomocí funkce create system call vytvořili nový soubor s názvem „test.txt ”a oprávnění ke čtení a zápisu jako offset parametru. Tento obsah souboru jsme vrátili deskriptoru souboru „fd“. V tomto C kódu jsme definovali if. Pokud je hodnota nebo index ukazatele deskriptoru souboru „-1“, vyvolá chybu volání funkce creat () k vytvoření nového souboru. Deskriptor „fd“ menší než „-1“ znamená, že ukazatel je na pozici -1.

Funkce exit () bude volána před uzavřením příkazu if. Dále jsme pomocí volání metody zápisu shromáždili hodnotu řetězce z vyrovnávací paměti a zapsali ji do souboru „test.txt “pomocí deskriptoru souboru„ fd “. Tato data byla vrácena do proměnné „ret“. Pokud je hodnota proměnné „Ret“ menší než -1, znamená to, že data nebyla zapsána do souboru. Takže musíte znovu zavolat funkci zápisu a ukončit příkaz if. Definovali jsme systémové volání fsync a dali jsme mu deskriptor souboru „fd“ jako hodnotu parametru pro synchronizaci deskriptoru souboru s diskovým zařízením. Při volání metody „zavřít“ rychle zapíše data na diskovou jednotku a zavře deskriptor souboru. Poté bude hlavní funkce uzavřena. Uložte tento soubor pomocí klávesové zkratky „Ctrl + S“ a soubor zavřete „nový“.c “pomocí klávesové zkratky„ Ctrl + X “.

Po uzavření nano souboru nyní nastal čas pro kompilaci výše uvedeného kódu. Pro kompilaci kódu musíme použít překladač gcc. Spusťte níže uvedený dotaz gcc a zkompilujte „nový.c ”soubor.

$ gcc nové.C

Nyní musíme tento kód provést pomocí jednoduchého a.příkaz out v shellu, jak je uvedeno níže. Tento příkaz jednoduše provede kód a nevrátí nic, ale data byla zapsána na diskovou jednotku v zadní části procesu.

$ ./A.ven

Zkontrolujte soubor, který byl vytvořen v kódu C, a má v sobě hodnotu řetězce.

$ kočičí test.txt

Závěr

Krátce jsme diskutovali o velmi jednoduchém a lineárním příkladu systémového volání fsync, abychom pochopili jeho koncept.Doufám, že nyní můžete snadno použít systémové volání fsync v Linuxu.

Hry Zdarma a open source herní motory pro vývoj linuxových her
Zdarma a open source herní motory pro vývoj linuxových her
Tento článek pokryje seznam bezplatných a otevřených herních enginů, které lze použít pro vývoj 2D a 3D her v systému Linux. Existuje mnoho takových h...
Hry Výukový program Shadow of the Tomb Raider pro Linux
Výukový program Shadow of the Tomb Raider pro Linux
Shadow of the Tomb Raider je dvanáctý přírůstek do série Tomb Raider - série akčních adventur vytvořená Eidosem Montrealem. Tato hra byla docela dobře...
Hry Jak zvýšit FPS v Linuxu?
Jak zvýšit FPS v Linuxu?
FPS znamená Snímků za sekundu. Úkolem FPS je měřit snímkovou frekvenci při přehrávání videa nebo herních výkonech. Jednoduše řečeno, počet nepřerušova...