C Programmeren

Fsync-systeemoproep gebruiken in C

Fsync-systeemoproep gebruiken in C

De fsync wordt gebruikt om de in-core status van een bestand te coördineren met elk opslagapparaat. De systeemaanroep fsync() passeert ("flusht") alle gewijzigde in-core inhoud van (i.e., gewijzigde buffer voor) de bestandsdescriptor fd naar een schijfmachine (of een ander permanent opslagapparaat) waar zo'n bestand blijft. Het ruimt zelfs de details van het bestand op. De fsync-systeemaanroep werkt op een enkel bestand. Alle updates van het bestand worden gewist. Als meerdere taken in hetzelfde bestand worden bewerkt, wordt de fsync-systeemaanroep onderbroken voordat alle updates naar de schijf zijn overgebracht. Als het systeem meldt dat de conversie is gelukt, wordt de oproep geblokkeerd. Het gebruik van fsync() garandeert niet dat de opname van het bestand in het bestandssysteem misschien ook de schijf is binnengekomen. Hiervoor is echter een geschikte fsync() in de bestandsdescriptor van de map vereist.

Installatievereisten:

Dus voor de fsync-systeemaanroep moeten enkele bibliotheken worden geïnstalleerd om eraan te werken. Als iemand de aanvullende informatie over het fsync-commando wil controleren, moet hij/zij manpages-dev-pakketten op zijn Linux-systeem hebben geïnstalleerd. Dus we zullen zien hoe dat te doen. Gebruik de Ctrl+Alt+T-toets vanaf het toetsenbord om de Linux-opdrachtregelterminal te starten. Om nu het manpages-dev-pakket te installeren, probeert u het onderstaande apt install-commando, gevolgd door een pakket met de naam "manpages-dev". Het installatieproces vereist uw accountwachtwoord om Linux door te laten gaan. Voer dus het Linux-wachtwoord van uw huidige account in en druk op de Enter-toets vanaf het toetsenbord. Het zal snel beginnen met de installatie en het configureren van manpages in je Linux-systeem. Leun achterover totdat het installatieproces is voltooid.

$ sudo apt install manpages-dev

Na de installatie kunt u de onderstaande opdracht gebruiken om de informatie over het fsync-systeem te controleren:.

$ man 2 fsync

De uitvoer voor het man-commando is hieronder toegevoegd:. U kunt alle informatie hierover lezen om het concept van de "fsync"-systeemaanroep in het Linux-systeem te begrijpen. Druk op de "q"-knop op het toetsenbord om dit venster te sluiten.

Een andere vereiste die vereist is om de fsync-systeemaanroep-ID de GCC-compiler te gebruiken. Dit komt omdat we de fsync-systeemaanroep gebruiken in de C-taal. Dus om C-taalcode uit te voeren en te compileren, moeten we een compilerpakket op ons systeem hebben geïnstalleerd. Dus hier hebben we een GCC-compiler. Je kunt het installeren met behulp van de zeer eenvoudige opdracht sudo apt zoals hieronder:. Het zal de installatie in een paar minuten voltooien en je kunt gemakkelijk C-codes in bestanden schrijven.

$ sudo apt install gcc

Voorbeeld:

Laten we beginnen met het fsync-commando om het goed te begrijpen. Allereerst moet u een C-type bestand maken met behulp van de nano-editor in de opdrachtregel-shell. Probeer hiervoor de onderstaande eenvoudige query in de shell uit te voeren:.

$ nano nieuw.c

Nadat het bestand is gemaakt en geopend, is het tijd om wat C-code te schrijven. Dus je kunt de onderstaande lange code in het nano-bestand zien. De eerste 7 regels hebben header-bestanden die nodig zijn om in het editorbestand te worden opgenomen voor de juiste werking van de "fsync"-systeemaanroep. Na deze header-bestanden hebben we de hoofdfunctie met integer-retourtype gedefinieerd als "int". Deze functie bevat twee parameters:. Een daarvan is een integer type, en de andere is een karaktertype array. In de ruimte van de hoofdfunctie hebben we een tekenreeks "*str" gedeclareerd en er een tekenreekswaarde aan gedefinieerd. Daarna hebben we ook twee variabelen van het type integer gedeclareerd die in verdere regels als bestandsdescriptors zullen worden gebruikt. In de volgende regel hebben we de functie systeemaanroep aanmaken gebruikt om een ​​nieuw bestand met de naam “test . te maken.txt" en lees- en schrijfrechten als een offset in parameter. We hebben deze bestandsinhoud teruggestuurd naar een bestandsdescriptor "fd". We hebben een if-statement gedefinieerd in deze C-code. Als de waarde of indexaanwijzer van de bestandsdescriptor "-1" is, wordt de fout gegenereerd om de functie creat() aan te roepen om een ​​nieuw bestand te maken. De descriptor "fd" kleiner dan "-1" betekent dat de aanwijzer op een -1-positie staat.

De functie exit() wordt aangeroepen voordat het if-statement wordt gesloten. Vervolgens hebben we de aanroep van de schrijfmethode gebruikt om de tekenreekswaarde uit de buffer te verzamelen en deze naar het bestand "test" te schrijven.txt" met behulp van de bestandsdescriptor "fd". Deze gegevens zijn teruggestuurd naar de variabele "ret". Als de waarde van variabele "Ret" kleiner is dan -1, betekent dit dat de gegevens niet naar een bestand zijn geschreven. Je moet dus opnieuw de schrijffunctie aanroepen en het if-statement verlaten. We hebben de fsync-systeemaanroep gedefinieerd en deze een bestandsdescriptor "fd" gegeven als een parameterwaarde om de bestandsdescriptor te synchroniseren met een schijfapparaat. Bij het aanroepen van de "close" -methode, zal het snel de gegevens naar een schijfstation schrijven en de bestandsdescriptor sluiten. Daarna wordt de hoofdfunctie gesloten. Sla dit bestand op met behulp van een sneltoets, "Ctrl+S", en sluit het bestand "new.c” met de sneltoets “Ctrl+X”.

Na het sluiten van het nano-bestand, is het nu tijd om de hierboven gepresenteerde code te compileren. Voor de compilatie van code moeten we de gcc-compiler gebruiken. Voer dus de onderstaande gcc-query uit om de "nieuwe".c” bestand.

$ gcc nieuw.c

Nu moeten we deze code uitvoeren met de eenvoudige a.out commando in de shell zoals hieronder:. Deze opdracht voert eenvoudigweg de code uit en retourneert niets, maar de gegevens zijn naar een schijf aan de achterkant van het proces geschreven.

$ ./een.uit

Controleer het bestand dat is gemaakt in de C-code, en het heeft een tekenreekswaarde erin.

$ kattentest.tekst

Conclusie

We hebben kort een heel eenvoudig en lineair voorbeeld van de fsync-systeemaanroep besproken om het concept ervan te begrijpen.Ik hoop dat je nu gemakkelijk de fsync-systeemaanroep in Linux kunt gebruiken.

Linkermuisknop werkt niet op Windows 10
Als u een speciale muis gebruikt met uw laptop of desktopcomputer, maar de linkermuisknop werkt niet not op Windows 10/8/7 om wat voor reden dan ook, ...
Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...