C Programmazione

Come utilizzare la chiamata di sistema Fsync in C

Come utilizzare la chiamata di sistema Fsync in C

Il fsync viene utilizzato per coordinare lo stato in-core di un file con qualsiasi dispositivo di archiviazione. La chiamata di sistema fsync() passa ("flush") tutto il contenuto in-core alterato di (i.e., buffer alterato per) il descrittore di file fd su una macchina per dischi (o qualsiasi altro dispositivo di memorizzazione perpetua) in cui tale file rimane. Pulisce anche i dettagli del file. La chiamata di sistema fsync funziona su un singolo file. Eventuali aggiornamenti al file verranno cancellati. Se vengono modificate più attività sullo stesso file, la chiamata di sistema fsync verrà sospesa prima che tutti gli aggiornamenti siano stati trasferiti sul disco. Se il sistema annuncia che la conversione è andata a buon fine, la chiamata verrà bloccata. L'uso di fsync() non garantisce che forse l'inclusione del file nel filesystem sia entrata anche nel disco. Tuttavia, per questo è necessario un fsync() appropriato sul descrittore di file della cartella.

Prerequisiti per l'installazione:

Quindi la chiamata di sistema fsync richiede l'installazione di alcune librerie per funzionare su di essa. Se qualcuno vuole controllare le informazioni aggiuntive riguardanti il ​​comando fsync, deve avere i pacchetti manpages-dev installati sul proprio sistema Linux. Quindi vedremo come farlo. Usa il tasto Ctrl+Alt+T dalla tastiera per avviare il terminale della riga di comando di Linux. Ora, per installare il pacchetto manpages-dev, prova il seguente comando apt install, seguito da un pacchetto denominato "manpages-dev". Il processo di installazione richiederà la password del tuo account per Linux per procedere. Quindi, inserisci la password Linux del tuo account corrente e premi il tasto Invio dalla tastiera. Inizierà rapidamente l'installazione e la configurazione delle pagine man nel tuo sistema Linux. Siediti finché non completa il processo di installazione.

$ sudo apt install manpages-dev

Dopo l'installazione, puoi utilizzare il comando seguente per controllare le informazioni sul sistema fsync.

$ uomo 2 fsync

L'output per il comando man è allegato di seguito. Puoi leggere qualsiasi informazione a riguardo per comprendere il concetto di chiamata di sistema "fsync" nel sistema Linux. Premere il pulsante "q" dalla tastiera per uscire da questa finestra.

Un altro prerequisito richiesto per utilizzare l'id della chiamata di sistema fsync del compilatore GCC. Questo perché stiamo usando la chiamata di sistema fsync all'interno del linguaggio C. Quindi, per eseguire e compilare il codice del linguaggio C, dobbiamo avere un pacchetto di compilatori installato nel nostro sistema. Quindi, qui abbiamo un compilatore GCC. Puoi installarlo usando il semplicissimo comando sudo apt come di seguito. Completerà la sua installazione in pochi minuti e potrai facilmente scrivere codici C nei file.

$ sudo apt install gcc

Esempio:

Iniziamo a lavorare sul comando fsync per capirlo bene. Prima di tutto, devi creare un file di tipo C usando l'editor nano nella shell della riga di comando. Per questo, prova a eseguire la semplice query di seguito nella shell.

$ nano nuovo.c

Dopo che il file è stato creato e aperto, è il momento di scrivere del codice C. Quindi puoi vedere il codice lungo di seguito nel file nano. Le prime 7 righe hanno file di intestazione che sono necessari per essere inclusi nel file dell'editor per il corretto funzionamento della chiamata di sistema "fsync". Dopo questi file di intestazione, abbiamo definito la funzione principale con tipo restituito intero come "int". Questa funzione contiene due parametri. Uno di questi è un tipo intero e l'altro è un array di tipi di caratteri. Nello spazio della funzione principale, abbiamo dichiarato una stringa di tipo carattere "*str" e definito un valore di tipo stringa su di essa. Successivamente, abbiamo anche dichiarato due variabili di tipo intero che verranno utilizzate come descrittori di file in ulteriori righe. Nella riga successiva, abbiamo utilizzato la funzione di chiamata di sistema create per creare un nuovo file denominato "test.txt" e leggere e scrivere i privilegi come offset nel parametro. Abbiamo restituito il contenuto di questo file a un descrittore di file "fd". Abbiamo definito l'istruzione if in questo codice C. Se il valore o il puntatore all'indice del descrittore di file è "-1", verrà generato l'errore di chiamare la funzione creat() per creare un nuovo file. Il descrittore "fd" minore di "-1" significa che il puntatore è in una posizione -1.

La funzione exit() verrà chiamata prima della chiusura dell'istruzione if. Successivamente, abbiamo utilizzato la chiamata al metodo write per raccogliere il valore della stringa dal buffer e scriverlo nel file "test.txt” utilizzando il descrittore di file “fd”. Questo dato è stato restituito alla variabile “ret”. Se il valore della variabile “Ret” è minore di -1, significa che i dati non sono stati scritti su un file. Quindi, devi chiamare di nuovo la funzione di scrittura ed uscire dall'istruzione if. Abbiamo definito la chiamata di sistema fsync e gli abbiamo assegnato un descrittore di file "fd" come valore del parametro per sincronizzare il descrittore di file su un dispositivo disco. Dopo aver chiamato il metodo "chiudi", scriverà rapidamente i dati in un'unità disco e chiuderà il descrittore di file. Successivamente, la funzione principale verrà chiusa will. Salva questo file utilizzando un tasto di scelta rapida da tastiera, "Ctrl+S" e chiudi il file "nuovo.c" utilizzando il tasto di scelta rapida "Ctrl+X".

Dopo aver chiuso il file nano, ora è il momento di compilare il codice sopra presentato. Per la compilazione del codice, dobbiamo usare il compilatore gcc. Quindi, esegui la seguente query gcc per compilare il "new.c" file.

$ gcc nuovo.c

Ora, dobbiamo eseguire questo codice usando il semplice a.out nella shell come di seguito. Questo comando eseguirà semplicemente il codice e non restituirà nulla, ma i dati sono stati scritti su un'unità disco nella parte posteriore del processo.

$ ./un.su

Controlla il file che è stato creato nel codice C e contiene un valore stringa string.

$ prova del gatto.TXT

Conclusione

Abbiamo discusso brevemente un esempio molto semplice e lineare della chiamata di sistema fsync per comprenderne il concetto.Spero che ora tu possa usare facilmente la chiamata di sistema fsync in Linux.

Come utilizzare Xdotool per stimolare i clic del mouse e le sequenze di tasti in Linux
Xdotool è uno strumento da riga di comando gratuito e open source per simulare i clic del mouse e le sequenze di tasti. Questo articolo tratterà una b...
I 5 migliori mouse per computer ergonomici per Linux
L'uso prolungato del computer provoca dolore al polso o alle dita?? Soffri di rigidità articolare e devi continuamente stringerti la mano? Senti un do...
Come modificare le impostazioni del mouse e del touchpad utilizzando Xinput in Linux
La maggior parte delle distribuzioni Linux viene fornita con la libreria "libinput" per impostazione predefinita per gestire gli eventi di input su un...