C Programiranje

Kako uporabljati sistemski klic Fsync v C

Kako uporabljati sistemski klic Fsync v C

Fsync se uporablja za koordinacijo stanja jedra datoteke s katero koli pomnilniško napravo. Sistemski klic fsync () posreduje (»zbriše«) vso spremenjeno vsebino jedra (i.e., spremenjeni vmesni pomnilnik za) deskriptor datoteke fd na diskovni stroj (ali katero koli drugo trajno napravo za shranjevanje), kjer taka datoteka ostane. Izbriše celo podrobnosti datoteke. Sistemski klic fsync deluje v eni datoteki. Vse posodobitve datoteke bodo odstranjene. Če je v isti datoteki urejenih več opravil, bo sistemski klic fsync zaustavljen, preden bodo vse posodobitve prenesene na disk. Če sistem sporoči, da je pretvorba uspešna, bo klic blokiran. Uporaba fsync () ne pomeni, da je morda vključitev datoteke v datotečni sistem vstopila tudi na disk. Za to pa je potreben ustrezen fsync () na deskriptorju mape.

Predpogoji za namestitev:

Tako sistemski klic fsync potrebuje nekaj knjižnic, ki bodo nameščene za delo na njem. Če želi nekdo preveriti dodatne informacije o ukazu fsync, mora imeti v svojem sistemu Linux nameščene pakete manpages-dev. Torej bomo videli, kako to storiti. S tipko Ctrl + Alt + T na tipkovnici zaženite terminal ukazne vrstice Linux. Zdaj, če želite namestiti paket manpages-dev, preizkusite spodnji ukaz apt install, ki mu sledi paket z imenom "manpages-dev". Za postopek namestitve bo Linux potreboval geslo za vaš račun. Vnesite geslo za svoj trenutni račun za Linux in na tipkovnici pritisnite tipko Enter. Hitro bo začel namestitev in konfiguriranje strani v vašem sistemu Linux. Sedite, dokler ni postopek namestitve končan.

$ sudo apt install manpages-dev

Po namestitvi lahko z spodnjim ukazom preverite informacije o sistemu fsync.

$ man 2 fsync

Izhod za ukaz man je priložen spodaj. Lahko preberete vse informacije v zvezi z njim, da razumete koncept sistemskega klica "fsync" v sistemu Linux. Pritisnite tipko “q” na tipkovnici, da zaprete to okno.

Drug predpogoj, potreben za uporabo sistemskega klica fsync id prevajalnika GCC. To je zato, ker uporabljamo sistemski klic fsync v jeziku C. Za izvajanje in prevajanje kode jezika C moramo imeti v našem sistemu nameščen nekaj prevajalniškega paketa. Torej, tu imamo prevajalnik GCC. Namestite ga lahko z zelo preprostim ukazom sudo apt, kot je prikazano spodaj. Namestitev bo dokončana v nekaj minutah, kode C pa lahko preprosto zapišete v datoteke.

$ sudo apt namestite gcc

Primer:

Začnimo delati na ukazu fsync, da ga bomo dobro razumeli. Najprej morate z uporabo urejevalnika nano v lupini ukazne vrstice ustvariti datoteko vrste C. Za to poskusite v lupini zagnati spodnjo preprosto poizvedbo.

$ nano novo.c

Ko je datoteka ustvarjena in odprta, je čas, da napišete nekaj kode C. Tako lahko v nano datoteki vidite spodnjo dolgo kodo. Prvih 7 vrstic ima datoteke z glavo, ki jih je treba vključiti v datoteko urejevalnika za pravilno delovanje sistemskega klica “fsync”. Po teh datotekah z glavo smo definirali glavno funkcijo s celoštevilnim vrnjenim tipom kot "int". Ta funkcija vsebuje dva parametra. Eden od njih je celoštevilski tip, drugi pa niz vrst znakov. V prostoru glavne funkcije smo razglasili niz znakov tipa "* str" in zanj definirali vrednost tipa niza. Po tem smo razglasili tudi dve spremenljivki celoštevilčnega tipa, ki bosta uporabljeni kot deskriptorji datotek v nadaljnjih vrsticah. V naslednji vrstici smo s pomočjo funkcije create system call ustvarili novo datoteko z imenom »test.txt "in privilegije branja in pisanja kot odmik v parametru. Vsebino datoteke smo vrnili deskriptorju datoteke „fd“. V tej kodi C smo določili stavek if. Če je vrednost ali kazalec kazalca deskriptorja datoteke "-1", bo prišlo do napake pri klicu funkcije creat () za ustvarjanje nove datoteke. Deskriptor "fd" manj kot "-1" pomeni, da je kazalec v položaju -1.

Funkcija exit () bo poklicana pred zaprtjem stavka if. Nato smo s klicem metode pisanja zbrali vrednost niza iz vmesnega pomnilnika in jo zapisali v datoteko “test”.txt "z uporabo deskriptorja datoteke„ fd ". Ti podatki so bili vrnjeni spremenljivki "ret". Če je vrednost spremenljivke "Ret" manjša od -1, to pomeni, da podatki niso bili zapisani v datoteko. Torej, znova morate poklicati funkcijo pisanja in zapreti stavek if. Določili smo sistemski klic fsync in mu dali deskriptor datoteke “fd” kot vrednost parametra za sinhronizacijo deskriptorja datoteke z diskovno napravo. Po klicu metode »zapri« bo podatke hitro zapisal v diskovni pogon in zaprl deskriptor datoteke. Po tem bo glavna funkcija zaprta. Datoteko shranite s tipko za bližnjico na tipkovnici »Ctrl + S« in zaprite datoteko »novo.c "s pomočjo bližnjične tipke" Ctrl + X ".

Ko zaprete datoteko nano, je zdaj čas, da sestavite zgoraj predstavljeno kodo. Za sestavljanje kode moramo uporabiti prevajalnik gcc. Torej, izvedite spodnjo poizvedbo gcc, da sestavite »novo.c ”.

$ gcc novo.c

Zdaj moramo to kodo izvršiti s pomočjo preprostega a.out ukaz v lupini, kot spodaj. Ta ukaz bo preprosto izvedel kodo in ne bo vrnil ničesar, vendar so bili podatki na zadnji strani procesa zapisani na diskovni pogon.

$ ./ a.ven

Preverite datoteko, ki je bila ustvarjena v kodi C, in vsebuje vrednost niza.

$ mačji test.txt

Zaključek

Na kratko smo razpravljali o zelo preprostem in linearnem primeru sistemskega klica fsync za razumevanje njegovega koncepta.Upam, da lahko zdaj enostavno uporabite sistemski klic fsync v Linuxu.

5 najboljših arkadnih iger za Linux
Dandanes so računalniki resni stroji, ki se uporabljajo za igre na srečo. Če ne boste mogli dobiti novega visokega rezultata, boste vedeli, kaj mislim...
Bitka za Wesnoth 1.13.6 Razvoj izdan
Bitka za Wesnoth 1.13.6, ki je izšel prejšnji mesec, je šesta razvojna izdaja v 1.13.x series in prinaša številne izboljšave, predvsem uporabniški vme...
Kako namestiti League Of Legends na Ubuntu 14.04
Če ste ljubitelj League of Legends, je to priložnost, da preizkusite League of Legends. Upoštevajte, da LOL podpira PlayOnLinux, če uporabljate Linux....