C Ohjelmointi

Kuinka käyttää Fsync-järjestelmäkutsua C ssä

Kuinka käyttää Fsync-järjestelmäkutsua C ssä

Fsync-tiedostoa käytetään koordinoimaan tiedoston ydintila minkä tahansa tallennuslaitteen kanssa. Fsync () -järjestelmäkutsu läpäisee ("huuhtelee") kaiken (i.e., muokattu puskuri) tiedostokuvaaja fd levykoneelle (tai muulle pysyvälle tallennuslaitteelle), johon tällainen tiedosto jää. Se jopa puhdistaa tiedoston yksityiskohdat. Fsync-järjestelmän kutsu toimii yhdellä tiedostolla. Kaikki päivitykset tiedostoon poistetaan. Jos samaan tiedostoon muokataan useita tehtäviä, fsync-järjestelmän puhelu keskeytetään ennen kuin kaikki päivitykset on siirretty levylle. Jos järjestelmä ilmoittaa muuntamisen onnistuneen, puhelu estetään. Fsync (): n käyttö ei takaa, että ehkä myös tiedoston sisällyttäminen tiedostojärjestelmään on tullut levylle. Tätä varten tarvitaan kuitenkin asianmukainen fsync () kansion tiedostokuvaajassa.

Asennuksen edellytykset:

Joten fsync-järjestelmän kutsu vaatii joitain kirjastoja, jotta se toimisi. Jos joku haluaa tarkistaa lisätietoja fsync-komennosta, hänen on asennettava manpages-dev-paketit Linux-järjestelmäänsä. Joten näemme, miten se tehdään. Käynnistä Linux-komentoriviterminaali näppäimistön Ctrl + Alt + T-näppäimellä. Asenna nyt manpages-dev-paketti kokeilemalla seuraavaa apt install -komentoa, jota seuraa paketti nimeltä “manpages-dev”. Asennus vaatii tilisi salasanan, jotta Linux jatkuu. Joten, kirjoita nykyisen tilisi Linux-salasana ja paina Enter-näppäintä. Se aloittaa nopeasti asennuksen ja kokoonpanosivut Linux-järjestelmässäsi. Istu alas, kunnes asennus on valmis.

$ sudo apt asenna manpages-dev

Asennuksen jälkeen voit tarkistaa alla olevan komennon avulla fsync-järjestelmän tiedot.

$ man 2 fsync

Man-komennon lähtö on liitteenä alla. Voit lukea kaikki siihen liittyvät tiedot ymmärtääksesi fsync-järjestelmäkutsun käsitteen Linux-järjestelmässä. Sulje ikkuna painamalla näppäimistön q-painiketta.

Toinen edellytys, joka tarvitaan fsync-järjestelmän kutsutunnuksen käyttämiseen GCC-kääntäjälle. Tämä johtuu siitä, että käytämme fsync-järjestelmän kutsua C-kielellä. Joten C-kielikoodin suorittamiseksi ja kääntämiseksi järjestelmäämme on asennettava kääntäjäpaketti. Joten tässä meillä on GCC-kääntäjä. Voit asentaa sen käyttämällä alla olevaa yksinkertaista sudo apt -komentoa. Se suorittaa asennuksensa loppuun muutamassa minuutissa, ja voit helposti kirjoittaa C-koodeja tiedostoihin.

$ sudo apt asenna gcc

Esimerkki:

Aloitetaan fsync-komennon kehittäminen ymmärtämään sitä hyvin. Ensinnäkin sinun on luotava C-tyyppinen tiedosto komentorivin kuoren nanoeditorilla. Tätä varten yritä suorittaa alla oleva yksinkertainen kysely kuoressa.

$ nano uusi.c

Kun tiedosto on luotu ja avattu, on aika kirjoittaa C-koodi. Joten näet alla olevan pitkän koodin nanotiedostossa. Ensimmäisillä seitsemällä rivillä on otsikkotiedostot, jotka on lisättävä muokkaustiedostoon, jotta ”fsync” -järjestelmäkutsu toimii oikein. Näiden otsikkotiedostojen jälkeen olemme määrittäneet kokonaisfunktion palautustyypin "int". Tämä toiminto sisältää kaksi parametria. Yksi niistä on kokonaislukutyyppi ja toinen merkkityyppiryhmä. Pääfunktion avaruudessa olemme ilmoittaneet merkkityyppimerkkijonon "* str" ja määrittäneet sen merkkijonotyyppiarvoksi. Sen jälkeen olemme myös ilmoittaneet kaksi kokonaislukutyyppistä muuttujaa, joita käytetään tiedostojen kuvaajana muilla riveillä. Seuraavalla rivillä olemme luoneet järjestelmän kutsutoiminnon uuden tiedoston nimeltä "testi" luomiseen.txt ”sekä luku- ja kirjoitusoikeudet parametrin siirtymänä. Olemme palauttaneet tämän tiedostosisällön tiedostokuvaajaan "fd". Olemme määrittäneet if-lauseen tässä C-koodissa. Jos tiedostokuvaajan arvo tai hakemiston osoitin on “-1”, se heittää virheen kutsua creat () -funktiota uuden tiedoston luomiseksi. Kuvaaja ”fd” pienempi kuin “-1” tarkoittaa, että osoitin on -1-asemassa.

Funktio exit () kutsutaan ennen if-käskyn sulkemista. Seuraavaksi olemme käyttäneet kirjoitusmenetelmäkutsu keräämään merkkijonon arvon puskurista ja kirjoittamalla sen tiedostoon "test".txt ”käyttämällä tiedostokuvaajaa“ fd ”. Nämä tiedot on palautettu muuttujaan "ret". Jos muuttujan ”Ret” arvo on alle -1, se tarkoittaa, että tietoja ei ole kirjoitettu tiedostoon. Joten sinun on kutsuttava uudelleen kirjoitusfunktio ja poistuttava if-lauseesta. Olemme määrittäneet fsync-järjestelmäkutsun ja antaneet sille tiedostokuvaajan "fd" parametriarvona synkronoidaksesi tiedostokuvaajan levykkeeseen. Kun kutsutaan "close" -menetelmää, se kirjoittaa tiedot nopeasti levyasemalle ja sulkee tiedostokuvaajan. Sen jälkeen päätoiminto suljetaan. Tallenna tämä tiedosto pikanäppäimellä "Ctrl + S" ja sulje tiedosto "new".c ”käyttämällä pikanäppäintä“ Ctrl + X ”.

Nanotiedoston sulkemisen jälkeen on nyt aika koota yllä esitetty koodi. Koodin kääntämisessä meidän on käytettävä gcc-kääntäjää. Joten, suorita alla oleva gcc-kysely kääntääksesi uuden.c ”tiedosto.

$ gcc uusi.c

Nyt meidän on suoritettava tämä koodi yksinkertaisen a: n avulla.komento kuoressa alla. Tämä komento yksinkertaisesti suorittaa koodin ja ei palauta mitään, mutta tiedot on kirjoitettu prosessorin takana olevalle levyasemalle.

$ ./ a.ulos

Tarkista tiedosto, joka on luotu C-koodissa, ja siinä on merkkijonoarvo.

$ kissatesti.txt

Johtopäätös

Olemme lyhyesti keskustelleet hyvin yksinkertaisesta ja lineaarisesta esimerkistä fsync-järjestelmän kutsusta sen käsitteen ymmärtämiseksi.Toivon, että nyt voit helposti käyttää fsync-järjestelmäkutsua Linuxissa.

Kuinka näyttää OSD-peitto koko näytön Linux-sovelluksissa ja peleissä
Koko näytön pelien pelaaminen tai sovellusten käyttäminen häiriöttömässä koko näytön tilassa voi estää sinut paneelissa tai tehtäväpalkissa näkyvistä ...
Viisi parasta pelin kaappauskorttia
Olemme kaikki nähneet ja rakastaneet suoratoistopelejä YouTubessa. PewDiePie, Jakesepticye ja Markiplier ovat vain joitain huippupelaajista, jotka ova...
How to Develop a Game on Linux
A decade ago, not many Linux users would predict that their favorite operating system would one day be a popular gaming platform for commercial video ...