C Програмиране

Как да използвам Fsync System Call в C

Как да използвам Fsync System Call в C

Fsync се използва за координиране на вътрешното състояние на даден файл с всяко устройство за съхранение. Системното повикване fsync () преминава („изтрива“) цялото променено вътрешно ядро ​​на (i.д., променен буфер за) файловия дескриптор fd към дискова машина (или друго постоянно устройство за съхранение), където такъв файл остава. Дори изчиства детайлите на файла. Системното повикване fsync работи върху един файл. Всички актуализации на файла ще бъдат изтрити. Ако няколко задачи се редактират в един и същ файл, системното повикване fsync ще бъде спряно преди всички актуализации да бъдат прехвърлени на диска. Ако системата обяви, че преобразуването е успешно, обаждането ще бъде блокирано. Използването на fsync () не гарантира, че включването на файла във файловата система също е влязло в диска. За това обаче е необходим подходящ fsync () в дескриптора на файла на папката.

Необходими условия за инсталиране:

Така че системното повикване fsync се нуждае от някои библиотеки, за да работи върху него. Ако някой иска да провери допълнителната информация относно командата fsync, той / тя трябва да има инсталирани пакети manpages-dev на тяхната Linux система. Така че ще видим как да направим това. Използвайте клавиша Ctrl + Alt + T от клавиатурата, за да стартирате терминала на командния ред на Linux. Сега, за да инсталирате пакета manpages-dev, изпробвайте следната команда apt install, последвана от пакет с име „manpages-dev“. Процесът на инсталиране ще изисква паролата за вашия акаунт за Linux, за да продължи. Така че, въведете текущата парола за вашия акаунт за Linux и натиснете клавиша Enter от клавиатурата. Той бързо ще стартира инсталацията и конфигурирането на страниците на вашата система Linux. Седнете, докато завърши инсталационния процес.

$ sudo apt install manpages-dev

След инсталацията можете да използвате командата по-долу, за да проверите информацията за системата fsync.

$ man 2 fsync

Изходът за командата man е добавен по-долу. Можете да прочетете всяка информация, свързана с него, за да разберете концепцията за системното повикване „fsync“ в системата Linux. Натиснете бутона „q“ от клавиатурата, за да излезете от този прозорец.

Друга предпоставка, необходима за използване на системното повикване fsync id на компилатора GCC. Това е така, защото използваме системното повикване fsync в езика C. Така че, за да изпълним и компилираме езиков код C, трябва да имаме инсталиран някакъв компилаторен пакет в нашата система. И така, тук имаме компилатор на GCC. Можете да го инсталирате с помощта на много простата команда sudo apt, както е показано по-долу. Той ще завърши инсталацията си след няколко минути и можете лесно да пишете C кодове във файлове.

$ sudo apt инсталирайте gcc

Пример:

Нека започнем да работим по командата fsync, за да я разберем добре. На първо място, трябва да създадете файл от тип C, като използвате нано редактора в обвивката на командния ред. За това се опитайте да изпълните следната проста заявка в черупката.

$ nano ново.° С

След като файлът е създаден и отворен, е време да напишете някакъв C код. Така че можете да видите долния дълъг код в nano файла. Първите 7 реда имат заглавни файлове, които са необходими, за да бъдат включени във файла на редактора за правилната работа на системното повикване “fsync”. След тези заглавни файлове дефинирахме основната функция с цяло число тип връщане като „int“. Тази функция съдържа два параметъра. Единият от тях е цяло число, а другият е масив от тип знаци. В пространството на основната функция ние декларирахме символен тип низ “* str” и дефинирахме стойност на типа низ към него. След това декларирахме и две променливи от цяло число, които ще бъдат използвани като файлови дескриптори в следващите редове. В следващия ред използвахме функцията create system call, за да създадем нов файл с име „test.txt ”и привилегии за четене и запис като отместване в параметъра. Върнахме това съдържание на файл в дескриптор на файл „fd“. Определихме оператора if в този C код. Ако стойността или указателят на индекса на дескриптора на файла е „-1“, той ще изведе грешката да извика функцията creat () за създаване на нов файл. Дескрипторът „fd“ по-малък от „-1“ означава, че указателят е на позиция -1.

Функцията exit () ще бъде извикана преди затварянето на оператора if. След това използваме извикването на метода write, за да съберем стойността на низа от буфера и да го запишем във файла „test“.txt “, използвайки дескриптора на файла„ fd “. Тези данни са върнати на променливата „ret“. Ако стойността на променлива „Ret“ е по-малка от -1, това означава, че данните не са записани във файл. Така че, трябва отново да извикате функцията за запис и да излезете от оператора if. Дефинирахме системното извикване на fsync и му дадохме файлов дескриптор „fd“ като стойност на параметър за синхронизиране на дескриптора на файл с дисково устройство. При извикване на метода „затваряне“ той бързо записва данните в дисково устройство и затваря дескриптора на файла. След това основната функция ще бъде затворена. Запазете този файл, като използвате клавишната комбинация „Ctrl + S“ и затворете файла „нов“.c ”с помощта на клавишната комбинация„ Ctrl + X ”.

След като затворите нано файла, сега е време да компилирате представения по-горе код. За компилирането на код трябва да използваме компилатора gcc. Така че, изпълнете долната gcc заявка, за да компилирате „new.c ”файл.

$ gcc ново.° С

Сега трябва да изпълним този код, като използваме простия a.команда out в черупката, както е показано по-долу. Тази команда просто ще изпълни кода и няма да върне нищо, но данните са записани на дисково устройство в задната част на процеса.

$ ./ а.навън

Проверете файла, който е създаден в C кода, и в него има стойност на низ.

$ тест за котка.текст

Заключение

Накратко обсъдихме много прост и линеен пример за системно повикване fsync, за да разберем неговата концепция.Надявам се, че сега можете лесно да използвате системното повикване fsync в Linux.

Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...
0 А.д. Урок
От многото стратегически игри, 0 A.д. успява да се открои като изчерпателно заглавие и много дълбока, тактическа игра, въпреки че е с отворен код. Раз...
Урок за Unity3D
Въведение в Unity 3D Unity 3D е мощен двигател за разработка на игри. Това е кръстосана платформа, която ви позволява да създавате игри за мобилни уст...