Fsync se koristi za koordinaciju stanja jezgre datoteke s bilo kojim uređajem za pohranu. Sistemski poziv fsync () prosljeđuje ("ispire") sav izmijenjeni sadržaj jezgre (tj.e., promijenjeni međuspremnik za) deskriptor datoteke fd na disk uređaj (ili bilo koji drugi trajni uređaj za pohranu) gdje takva datoteka ostaje. Čak i briše detalje datoteke. Sistemski poziv fsync radi na jednoj datoteci. Sva će se ažuriranja datoteke ukloniti. Ako se u istu datoteku uređuje nekoliko zadataka, sistemski poziv fsync obustavit će se prije nego što se sva ažuriranja prenesu na disk. Ako sustav objavi da je pretvorba uspješna, poziv će biti blokiran. Korištenje fsync () ne garantira da je možda i uključivanje datoteke u datotečni sustav ušlo na disk. Međutim, za to je potreban odgovarajući fsync () na opisu datoteke mape.
Preduvjeti za instalaciju:
Dakle, sistemskom pozivu fsync potrebne su neke knjižnice koje trebaju biti instalirane da rade na njemu. Ako netko želi provjeriti dodatne informacije u vezi s naredbom fsync, mora imati instalirane pakete manpages-dev na svom Linux sustavu. Pa ćemo vidjeti kako to učiniti. Upotrijebite tipku Ctrl + Alt + T na tipkovnici da biste pokrenuli Linux terminal s naredbenim retkom. Sada, da biste instalirali paket manpages-dev, isprobajte sljedeću naredbu apt install, slijedi paket nazvan "manpages-dev". Proces instalacije zahtijevat će lozinku vašeg računa za Linux da bi se nastavio. Dakle, unesite lozinku za svoj trenutni račun za Linux i pritisnite tipku Enter s tipkovnice. Brzo će započeti instalaciju i konfiguriranje stranica u vašem Linux sustavu. Sjednite dok ne dovrši postupak instalacije.
$ sudo apt install manpages-dev
Nakon instalacije, pomoću naredbe u nastavku možete provjeriti informacije o sustavu fsync.
$ man 2 fsync
Izlaz za naredbu man nalazi se u nastavku. Možete pročitati sve informacije u vezi s tim da biste razumjeli koncept sistemskog poziva "fsync" u Linux sustavu. Pritisnite gumb "q" s tipkovnice da biste zatvorili ovaj prozor.
Još jedan preduvjet potreban za upotrebu fsync sistemskog poziva id GCC kompajlera. To je zato što koristimo sistemski poziv fsync unutar jezika C. Dakle, da bismo izvršili i kompilirali kôd jezika C, u našem sustavu mora biti instaliran neki paket kompajlera. Dakle, ovdje imamo GCC kompajler. Možete ga instalirati pomoću vrlo jednostavne naredbe sudo apt kao u nastavku. Instalaciju će dovršiti za nekoliko minuta, a C kodove možete jednostavno pisati u datoteke.
$ sudo apt instalirati gcc
Primjer:
Počnimo raditi na naredbi fsync da bismo je dobro razumjeli. Prije svega, morate stvoriti datoteku tipa C pomoću nano uređivača u ljusci naredbenog retka. Za to pokušajte u ljusci pokrenuti donji jednostavni upit.
$ nano novo.c
Nakon što je datoteka kreirana i otvorena, vrijeme je da napišete neki C kod. Tako možete vidjeti donji dugački kôd u nano datoteci. Prvih 7 redaka sadrži datoteke zaglavlja koje su potrebne da bi se uključile u datoteku uređivača za ispravan rad sistemskog poziva "fsync". Nakon ovih datoteka zaglavlja, definirali smo glavnu funkciju s cijelim tipom povratka kao "int". Ova funkcija sadrži dva parametra. Jedan od njih je cjelobrojni tip, a drugi niz znakova. U prostoru glavne funkcije proglasili smo niz znakova tipa "* str" i definirali mu vrijednost tipa niza. Nakon toga smo također proglasili dvije varijable cijelog broja koje će se koristiti kao deskriptori datoteka u daljnjim redovima. U sljedećem smo retku koristili funkciju create system call za stvaranje nove datoteke pod nazivom „test.txt ”i privilegije čitanja i pisanja kao pomak u parametru. Vratili smo ovaj sadržaj datoteke opisu datoteke "fd". Definirali smo izjavu if u ovom C kodu. Ako je vrijednost ili pokazivač indeksa deskriptora datoteke "-1", izbacit će pogrešku u pozivanju funkcije creat () za stvaranje nove datoteke. Deskriptor "fd" manji od "-1" znači da je pokazivač na položaju -1.
Funkcija exit () pozvat će se prije zatvaranja naredbe if. Dalje smo koristili poziv metode pisanja kako bismo prikupili vrijednost niza iz međuspremnika i zapisali je u datoteku „test“.txt "pomoću deskriptora datoteke" fd ". Ovi su podaci vraćeni u varijablu "ret". Ako je vrijednost varijable "Ret" manja od -1, to znači da podaci nisu zapisani u datoteku. Dakle, morate ponovno pozvati funkciju pisanja i izaći iz naredbe if. Definirali smo sistemski poziv fsync i dali mu opis datoteke "fd" kao vrijednost parametra za sinkronizaciju deskriptora datoteke s diskovnim uređajem. Nakon pozivanja metode "zatvori", brzo će upisati podatke u pogon diska i zatvoriti deskriptor datoteke. Nakon toga će se zatvoriti glavna funkcija. Spremite ovu datoteku pomoću tipkovne prečice tipke "Ctrl + S" i zatvorite datoteku "novo.c ”pomoću tipke prečaca„ Ctrl + X ”.
Nakon zatvaranja nano datoteke, sada je vrijeme da sastavite gore predstavljeni kod. Za kompilaciju koda moramo koristiti gcc kompajler. Dakle, izvršite donji gcc upit da biste sastavili „novo.c ”datoteka.
$ gcc novo.c
Sada moramo izvršiti ovaj kod pomoću jednostavnog a.naredba out u ljusci kao dolje. Ova će naredba jednostavno izvršiti kôd i neće vratiti ništa, ali podaci su zapisani na disk u stražnjem dijelu postupka.
$ ./ a.van
Provjerite datoteku koja je stvorena u C kodu i ona sadrži vrijednost niza.
$ mačji test.txt
Zaključak
Ukratko smo razgovarali o vrlo jednostavnom i linearnom primjeru poziva fsync sustava da bismo razumjeli njegov koncept.Nadam se da sada lako možete koristiti sistemski poziv fsync u Linuxu.