Programowanie C

Jak korzystać z wywołania systemowego Fsync w C

Jak korzystać z wywołania systemowego Fsync w C

fsync służy do koordynowania stanu rdzenia pliku z dowolnym urządzeniem pamięci masowej. Wywołanie systemowe fsync() przekazuje („opróżnia”) całą zmienioną zawartość rdzenia (i.mi., zmieniony bufor dla) deskryptora pliku fd na maszynę dyskową (lub inne urządzenie do przechowywania wieczystego), gdzie taki plik pozostaje. Czyści nawet szczegóły pliku. Wywołanie systemowe fsync działa na jednym pliku. Wszelkie aktualizacje pliku zostaną usunięte. Jeśli kilka zadań jest edytowanych do tego samego pliku, wywołanie systemowe fsync zostanie zawieszone, zanim wszystkie aktualizacje zostaną przeniesione na dysk. Jeśli system poinformuje, że konwersja się powiodła, połączenie zostanie zablokowane. Użycie fsync() nie gwarantuje, że być może włączenie pliku do systemu plików również trafiło na dysk disc. Jednak do tego wymagana jest odpowiednia funkcja fsync() w deskryptorze pliku folderu.

Wymagania wstępne instalacji:

Wywołanie systemowe fsync wymaga więc zainstalowania kilku bibliotek, aby na nim działać work. Jeśli ktoś chce sprawdzić dodatkowe informacje dotyczące polecenia fsync, musi mieć zainstalowane w swoim systemie Linux pakiety manpages-dev. Więc zobaczymy, jak to zrobić. Użyj klawisza Ctrl + Alt + T na klawiaturze, aby uruchomić terminal wiersza poleceń systemu Linux. Teraz, aby zainstalować pakiet manpages-dev, wypróbuj poniższe polecenie apt install, a następnie pakiet o nazwie „manpages-dev”. Proces instalacji będzie wymagał podania hasła do konta, aby system Linux mógł kontynuować. Więc wprowadź swoje aktualne hasło do konta Linux i naciśnij klawisz Enter na klawiaturze. Szybko rozpocznie instalację i konfigurację stron podręcznika w twoim systemie Linux. Usiądź wygodnie, aż zakończy proces instalacji.

$ sudo apt install manpages-dev

Po instalacji możesz użyć poniższego polecenia, aby sprawdzić informacje o systemie fsync.

$ man 2 fsync

Dane wyjściowe polecenia man są dołączone poniżej. Możesz przeczytać wszelkie informacje na ten temat, aby zrozumieć koncepcję wywołania systemowego „fsync” w systemie Linux. Naciśnij przycisk „q” na klawiaturze, aby zamknąć to okno.

Kolejny warunek wymagany do użycia identyfikatora wywołania systemowego fsync kompilatora GCC. Dzieje się tak, ponieważ używamy wywołania systemowego fsync w języku C. Tak więc, aby wykonać i skompilować kod w języku C, musimy mieć zainstalowany w naszym systemie jakiś pakiet kompilatora. Tak więc mamy kompilator GCC. Możesz go zainstalować za pomocą bardzo prostego polecenia sudo apt, jak poniżej. Zakończy instalację w ciągu kilku minut i możesz z łatwością pisać kody C w plikach.

$ sudo apt zainstaluj gcc

Przykład:

Zacznijmy pracę nad poleceniem fsync, aby dobrze je zrozumieć. Przede wszystkim musisz utworzyć plik typu C za pomocą edytora nano w powłoce wiersza poleceń. W tym celu spróbuj uruchomić poniższe proste zapytanie w powłoce.

$ nano nowy.do

Po utworzeniu i otwarciu pliku nadszedł czas na napisanie kodu C. Możesz więc zobaczyć poniższy długi kod w pliku nano. Pierwsze 7 wierszy zawiera pliki nagłówkowe, które należy umieścić w pliku edytora, aby wywołanie systemowe „fsync” działało poprawnie. Po tych plikach nagłówkowych zdefiniowaliśmy funkcję main z typem zwracanym jako liczba całkowita jako „int”. Ta funkcja zawiera dwa parametry. Jeden z nich to typ całkowity, a drugi to tablica typu znakowego. W przestrzeni funkcji main zadeklarowaliśmy łańcuch znaków „*str” i zdefiniowaliśmy do niego wartość typu string string. Następnie zadeklarowaliśmy również dwie zmienne typu integer, które będą używane jako deskryptory plików w dalszych wierszach. W następnym wierszu użyliśmy funkcji create system call do utworzenia nowego pliku o nazwie „test”.txt” oraz uprawnienia do odczytu i zapisu jako przesunięcie w parametrze. Zwróciliśmy zawartość tego pliku do deskryptora pliku „fd”. Zdefiniowaliśmy instrukcję if w tym kodzie C. Jeśli wartość lub wskaźnik indeksu deskryptora pliku to „-1”, zgłosi błąd wywołania funkcji creat() w celu utworzenia nowego pliku. Deskryptor „fd” mniejszy niż „-1” oznacza, że ​​wskaźnik znajduje się na pozycji -1.

Funkcja exit() zostanie wywołana przed zamknięciem instrukcji if. Następnie użyliśmy wywołania metody write do pobrania wartości ciągu z bufora i zapisania go do pliku „test.txt” za pomocą deskryptora pliku „fd”. Te dane zostały zwrócone do zmiennej „ret”. Jeżeli wartość zmiennej „Ret” jest mniejsza niż -1, oznacza to, że dane nie zostały zapisane do pliku. Musisz więc ponownie wywołać funkcję write i wyjść z instrukcji if. Zdefiniowaliśmy wywołanie systemowe fsync i nadaliśmy mu deskryptor pliku „fd” jako wartość parametru do synchronizacji deskryptora pliku z urządzeniem dyskowym. Po wywołaniu metody „zamknij” szybko zapisze dane na dysku i zamknie deskryptor pliku. Następnie główna funkcja zostanie zamknięta. Zapisz ten plik za pomocą klawisza skrótu klawiszowego „Ctrl+S” i zamknij plik „nowy.c” za pomocą klawisza skrótu „Ctrl+X”.

Po zamknięciu pliku nano czas na skompilowanie powyższego kodu. Do kompilacji kodu musimy użyć kompilatora gcc. Wykonaj więc poniższe zapytanie gcc, aby skompilować „nowe.c” plik.

$ gcc nowy.do

Teraz musimy wykonać ten kod za pomocą prostego a.out polecenie w powłoce jak poniżej. To polecenie po prostu wykona kod i nic nie zwróci, ale dane zostały zapisane na dysku w tylnej części procesu.

$ ./za.na zewnątrz

Sprawdź plik, który został utworzony w kodzie C i zawiera w sobie wartość ciągu.

$ test kota.tekst

Wniosek

Krótko omówiliśmy bardzo prosty i liniowy przykład wywołania systemowego fsync, aby zrozumieć jego koncepcję.Mam nadzieję, że teraz możesz łatwo użyć wywołania systemowego fsync w Linuksie.

Jak używać Xdotool do stymulacji kliknięć myszą i naciśnięć klawiszy w systemie Linux?
Xdotool to darmowe i otwarte narzędzie wiersza poleceń do symulacji kliknięć myszą i naciśnięć klawiszy. Ten artykuł zawiera krótki przewodnik dotyczą...
5 najlepszych ergonomicznych myszy komputerowych dla systemu Linux
Czy długotrwałe korzystanie z komputera powoduje ból nadgarstka lub palców?? Cierpisz na sztywne stawy i ciągle musisz uścisnąć dłonie? Czy czujesz pa...
Jak zmienić ustawienia myszy i touchpada za pomocą Xinput w systemie Linux?
Większość dystrybucji Linuksa jest domyślnie dostarczana z biblioteką „libinput” do obsługi zdarzeń wejściowych w systemie. Może przetwarzać zdarzenia...