Programare C

Cum se folosește apelul de sistem Fsync în C

Cum se folosește apelul de sistem Fsync în C

Fsync este utilizat pentru a coordona starea in-core a unui fișier cu orice dispozitiv de stocare. Apelul de sistem fsync () trece („clipește”) tot conținutul in-core modificat al (i.e., tampon modificat pentru) descriptorul de fișiere fd pe o mașină de disc (sau orice alt dispozitiv de stocare perpetuu) în care rămâne un astfel de fișier. Ba chiar curăță detaliile fișierului. Apelul de sistem fsync funcționează pe un singur fișier. Orice actualizare a fișierului va fi eliminată. Dacă mai multe sarcini sunt editate în același fișier, apelul de sistem fsync va fi suspendat înainte ca toate actualizările să fie transferate pe disc. Dacă sistemul anunță că conversia are succes, apelul va fi blocat. Folosirea fsync () nu garantează că probabil includerea fișierului în sistemul de fișiere a intrat și pe disc. Cu toate acestea, este necesar un fsync () adecvat în descriptorul de fișiere al folderului.

Instalați premisele:

Deci apelul de sistem fsync are nevoie de niște biblioteci pentru a fi instalate pentru a lucra la el. Dacă cineva dorește să verifice informațiile suplimentare referitoare la comanda fsync, el / ea trebuie să aibă pachete manpages-dev instalate pe sistemul lor Linux. Deci vom vedea cum să facem asta. Utilizați tasta Ctrl + Alt + T de la tastatură pentru a lansa terminalul liniei de comandă Linux. Acum, pentru a instala pachetul manpages-dev, încercați următoarea comandă apt install, urmată de un pachet numit „manpages-dev”. Procesul de instalare va necesita parola contului dvs. pentru ca Linux să continue. Deci, introduceți parola Linux pentru contul curent și apăsați tasta Enter de la tastatură. Va porni rapid instalarea și configurarea paginilor de manual în sistemul dvs. Linux. Așezați-vă până când finalizează procesul de instalare.

$ sudo apt install manpages-dev

După instalare, puteți utiliza comanda de mai jos pentru a verifica informațiile despre sistemul fsync.

$ man 2 fsync

Ieșirea pentru comanda man este anexată mai jos. Puteți citi orice informații referitoare la aceasta pentru a înțelege conceptul apelului de sistem „fsync” din sistemul Linux. Apăsați butonul „q” de la tastatură pentru a ieși din această fereastră.

O altă condiție prealabilă necesară pentru a utiliza ID-ul de apel al sistemului fsync compilatorul GCC. Acest lucru se datorează faptului că folosim apelul de sistem fsync în limbajul C. Deci, pentru a executa și a compila codul limbajului C, trebuie să avem un pachet de compilator instalat în sistemul nostru. Deci, aici avem un compilator GCC. Puteți să-l instalați folosind comanda sudo apt foarte simplă, ca mai jos. Acesta își va finaliza instalarea în câteva minute și puteți scrie cu ușurință coduri C în fișiere.

$ sudo apt install gcc

Exemplu:

Să începem să lucrăm la comanda fsync pentru a o înțelege bine. În primul rând, trebuie să creați un fișier de tip C folosind editorul nano din shell-ul liniei de comandă. Pentru aceasta, încercați să rulați interogarea simplă de mai jos în shell.

$ nano nou.c

După ce fișierul a fost creat și deschis, este timpul să scrieți un cod C. Deci, puteți vedea codul lung de mai jos în fișierul nano. Primele 7 linii au fișiere antet care sunt necesare pentru a fi incluse în fișierul editor pentru funcționarea corectă a apelului de sistem „fsync”. După aceste fișiere antet, am definit funcția principală cu tipul de returnare întreg ca „int”. Această funcție conține doi parametri. Una dintre ele este un tip întreg, iar cealaltă este o matrice de tip caractere. În spațiul funcției principale, am declarat un șir de tip caracter „* str” și i-am definit o valoare de tip șir. După aceea, am declarat, de asemenea, două variabile de tip întreg care vor fi folosite ca descriptori de fișiere în alte linii. În următoarea linie, am folosit funcția de creare a apelului de sistem pentru a crea un nou fișier numit „test.txt ”și privilegii de citire și scriere ca un offset în parametru. Am returnat conținutul acestui fișier la un descriptor de fișiere „fd”. Am definit definiția if în acest cod C. Dacă valoarea sau indicatorul index al descriptorului fișierului este „-1” va arunca eroarea de a apela funcția creat () pentru a crea un fișier nou. Descriptorul „fd” mai mic decât „-1” înseamnă că indicatorul este la o poziție -1.

Funcția exit () va fi apelată înainte de închiderea instrucțiunii if. Apoi, am folosit apelul metodei de scriere pentru a colecta valoarea șirului din buffer și a o scrie în fișierul „test.txt ”folosind descriptorul de fișiere„ fd ”. Aceste date au fost returnate variabilei „ret”. Dacă valoarea variabilei „Ret” este mai mică de -1, aceasta înseamnă că datele nu au fost scrise într-un fișier. Deci, trebuie să apelați din nou funcția de scriere și să ieșiți din instrucțiunea if. Am definit apelul de sistem fsync și i-am dat un descriptor de fișier „fd” ca valoare de parametru pentru a sincroniza descriptorul de fișier cu un dispozitiv disc. La apelarea metodei „închidere”, va scrie rapid datele într-o unitate de disc și va închide descriptorul de fișiere. După aceea, funcția principală va fi închisă. Salvați acest fișier folosind o tastă de comandă rapidă de la tastatură, „Ctrl + S” și închideți fișierul „nou.c ”utilizând tasta de comandă rapidă„ Ctrl + X ”.

După închiderea fișierului nano, acum este timpul să compilați codul prezentat mai sus. Pentru compilarea codului, trebuie să folosim compilatorul gcc. Deci, executați interogarea gcc de mai jos pentru a compila „noul.c ”fișier.

$ gcc nou.c

Acum, trebuie să executăm acest cod folosind un simplu a.comanda out în shell ca mai jos. Această comandă va executa pur și simplu codul și nu va returna nimic, dar datele au fost scrise pe o unitate de disc în partea din spate a procesului.

$ ./A.afară

Verificați fișierul care a fost creat în codul C și are o valoare șir în el.

$ test de pisica.txt

Concluzie

Am discutat pe scurt un exemplu foarte simplu și liniar al apelului sistemului fsync pentru a înțelege conceptul său.Sper că acum puteți utiliza cu ușurință apelul de sistem fsync în Linux.

Jocuri HD remasterizate pentru Linux care nu au avut niciodată lansare Linux mai devreme
Mulți dezvoltatori și editori de jocuri vin cu remasterizarea HD a jocurilor vechi pentru a prelungi durata de viață a francizei, vă rog fanilor să so...
Cum se utilizează AutoKey pentru automatizarea jocurilor Linux
AutoKey este un utilitar de automatizare desktop pentru Linux și X11, programat în Python 3, GTK și Qt. Folosind funcțiile sale de scriptare și MACRO,...
Cum se arată FPS Counter în jocurile Linux
Jocurile cu Linux au primit un impuls major când Valve a anunțat suportul Linux pentru clientul Steam și jocurile acestora în 2012. De atunci, multe j...