C Програмування

Як використовувати Fsync System Call в C

Як використовувати Fsync System Call в C

Fsync використовується для координації внутрішнього ядра файлу з будь-яким запам'ятовуючим пристроєм. Системний виклик fsync () передає (“змиває”) весь змінений внутрішній вміст (i.e., змінений буфер для) дескриптора файлу 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 ідентифікатора компілятора GCC. Це тому, що ми використовуємо системний виклик fsync у мові C. Отже, для виконання та компіляції мовного коду на С, ми повинні мати якийсь компілятор, встановлений у нашій системі. Отже, тут ми маємо компілятор GCC. Ви можете встановити його за допомогою дуже простої команди sudo apt, як показано нижче. Він завершить установку за кілька хвилин, і ви можете легко писати коди C у файлах.

$ sudo apt встановити gcc

Приклад:

Почнемо працювати над командою fsync, щоб добре її зрозуміти. Перш за все, вам потрібно створити файл типу C за допомогою редактора nano в оболонці командного рядка. Для цього спробуйте виконати наведений нижче простий запит у оболонці.

$ нано нові.c

Після того, як файл створено та відкрито, настав час написати трохи коду C. Отже, ви можете побачити нижній довгий код у нано-файлі. Перші 7 рядків містять файли заголовків, які необхідно включити у файл редактора для належної роботи системного виклику “fsync”. Після цих файлів заголовків ми визначили основну функцію з цілочисельним типом повернення як “int”. Ця функція містить два параметри. Один з них - цілочисельний тип, а другий - масив типу символів. У просторі головної функції ми оголосили рядок типу символів “* str” і визначили для нього значення типу рядка. Після цього ми також оголосили дві цілісні змінні типу, які будуть використовуватися як дескриптори файлів у наступних рядках. У наступному рядку ми використали функцію створення системного виклику для створення нового файлу з назвою „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 новий.c

Тепер ми повинні виконати цей код, використовуючи простий a.команда out у оболонці, як показано нижче. Ця команда просто виконає код і нічого не поверне, але дані були записані на дисковий накопичувач в кінці процесу.

$ ./ а.назовні

Перевірте файл, створений у коді С, і в ньому є значення рядка.

$ тест на котів.txt

Висновок

Ми коротко обговорили дуже простий і лінійний приклад системного виклику fsync для розуміння його концепції.Сподіваюсь, тепер ви можете легко використовувати системний виклик fsync у Linux.

HD Remastered Games для Linux, які раніше ніколи не випускали Linux
Багато розробників і видавців ігор випускають HD-ремастер старих ігор, щоб продовжити життя франшизи. Будь ласка, шанувальники просять сумісність із с...
Як використовувати AutoKey для автоматизації ігор Linux
AutoKey - це утиліта автоматизації робочого столу для Linux та X11, запрограмована на Python 3, GTK та Qt. Використовуючи його сценарії та функціональ...
How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...