Funzione Fstat in C

Funzione Fstat In C



La funzione fstat() chiama il sistema per restituire le informazioni (riguardanti alcuni file) che dipendono dal descrittore di quel file. Questa funzione ottiene le informazioni per il file associato al descrittore di file noto anche come 'fildes' e quindi scrive queste informazioni nella posizione di memoria a cui punta il buffer. Il tipo restituito di questa funzione è un numero intero. Restituisce il valore '0' se il programma viene eseguito correttamente. In caso contrario, restituisce un '-1' alla funzione in caso di esecuzione non riuscita. L'errore di esecuzione per questa funzione può essere dovuto ad alcuni motivi specifici come se il file della funzione ha un descrittore non valido per il file, se l'errore di lettura per l'input e l'output si verifica dal file e se la posizione di memoria (struttura) in cui il buffer punta a scrivere le informazioni sul file non hanno memoria allocata sufficiente per la dimensione del file.

Procedura

Questo articolo segue l'ordine sequenziale per implementare la funzione fstat() per ottenere le informazioni sul file. Per prima cosa impariamo la sintassi per questa funzione, i parametri richiesti per questa funzione. Quindi, utilizziamo questa sintassi per eseguire alcuni esempi per la funzione fstat().







Sintassi

Il metodo per dichiarare la funzione fstat() che abilita l'accesso del programma alle informazioni sul file è menzionato nella riga seguente:



$ #include
$ int stato ( int filde , struttura statistica * bf ) ;

Ogni volta che dobbiamo chiamare la funzione nel nostro programma, dobbiamo prima importare i file di intestazione che supportano questa funzione come 'sys/stat.h'. Il tipo restituito per la funzione è sempre “int” e il parametro include “fildes” con il tipo di dati “int”. Fildes è un descrittore per il file di cui vogliamo conoscere le informazioni. Un altro parametro che viene dato alla funzione è il puntatore “buf”. È un puntatore 'struct stat' che punta verso la struttura in cui vogliamo memorizzare i dati sul file. Questa è una breve descrizione dei parametri di input per la funzione fstat().



Esempio

Utilizziamo la descrizione precedentemente menzionata ed eseguiamo un programma per ottenere le informazioni su qualsiasi file / specifico tramite il nostro programma. Scriviamo questo programma nel compilatore C di Microsoft Visual Studio per l'esecuzione. Iniziamo con l'esempio creando prima un progetto e poi aggiungendolo ai repository C in Visual Studio. Per aggiungere il progetto ai file C, includiamo il '.c' con il nome del progetto e lo aggiungiamo al file sorgente del progetto. Il passo successivo dopo la creazione del progetto è richiamare tutte le librerie richieste per le funzioni che potremmo usare più avanti nel programma. Poiché in questo articolo stiamo implementando l'esempio per la funzione fstat(), dobbiamo includere il file di intestazione “sys/stat.h”. Per le informazioni sul file, è necessario conoscere il tipo di dispositivo in cui esiste il file. Per conoscere il tipo di dati per il dispositivo, includiamo l'intestazione 'type. h” nel programma.





Le informazioni sul file devono includere l'ora dell'ultima apertura del file e la modifica apportata. Per accedere a queste funzioni di chiamata temporale, aggiungiamo il file di intestazione “times. h” e “fcntl. h' per le funzioni di autorizzazione dei file. L'ultima intestazione “stdio. h” è anche incluso nel programma per chiamare i metodi printf() e scanf() nel programma. I file di intestazione che abbiamo discusso per essere inclusi nel programma sono i seguenti:

$ #include
$ #include
$ #include
$ #include
$ #includi

Dopo che i file di intestazione menzionati in precedenza sono stati importati correttamente nel programma, ora costruiamo il programma per ottenere le informazioni su un file specifico. Dichiariamo la funzione che ha come tipo di ritorno “int” con il nome “main”. In questa funzione principale, dichiariamo un array 'char' e gli assegniamo il nome del file di cui abbiamo bisogno per conoscere un'informazione. Quindi, definiamo una 'informazione statistica' con il tipo di dati 'struct'. Questa struttura è un luogo in cui memorizziamo le informazioni sul file.



Quindi, definiamo un'altra variabile con il nome 'file_descriptor' con il tipo di dati come 'intero'. Nella condizione “if” chiediamo il permesso per le operazioni di lettura e scrittura del file se esiste, passando “S_IWUSR” e nome dell'array alla funzione “create()” che chiama i permessi per il file if esiste o creare un nuovo file in caso contrario. Passiamo questa funzione create() alla 'condizione if' che afferma se il valore della funzione create() è inferiore a zero, quindi crea un errore che deve essere creato il file. Se fstat() con parametri come 'file_descriptor' e 'information' e 'l'indirizzo della posizione in cui sono archiviate le informazioni sul file' non è uguale a zero, visualizziamo il valore restituito fstat() che è l'informazione del file . E stampiamo le informazioni sotto forma di attributi, ad es. ID dispositivo in cui è memorizzato il file, numero Inode del dispositivo, modalità di protezione del file, ID utente, ID gruppo e numero del collegamento (forma fisica).

Dopo aver visualizzato questi attributi, usciamo dalle istruzioni e chiudiamo il file utilizzando il metodo close(). Quindi, scollega il file chiamando il metodo unlink().

#include
#include
#include
#include
#includi

principale ( ) {
car Vettore [ ] = 'amp.file' ;
struttura informazioni statistiche ;
int descrittore di file ;
Se ( ( descrittore di file = fatto ( Vettore , S_IWUSR ) ) < 0 )
perro ( errore 'creat()' ) ;
altro {
Se ( stato ( descrittore di file , & informazione ) != 0 )
perro ( 'errore fstat()' ) ;
altro {
mette ( 'valori fstat():' ) ;
stampa f ( ' inode: %d \n ' , ( int ) Informazioni. st_ino ) ;
stampa f ( ' ID_dispositivo: %d \n ' , ( int ) Informazioni. st_dev ) ;
stampa f ( ' modalità del dispositivo: %08x \n ' , Informazioni. st_mode ) ;
stampa f ( ' no_of_hard_links: %d \n ' , Informazioni. st_nlink ) ;
stampa f ( ' u_id: %d \n ' , ( int ) Informazioni. st_uid ) ;
stampa f ( ' g_id: %d \n ' , ( int ) Informazioni. st_gid ) ;
}
chiudere ( descrittore di file ) ;
scollega ( Vettore ) ;
}
}

Il programma accederà prima all'autorizzazione per l'operazione sul file, quindi leggerà i dati in esso contenuti e li scriverà nella posizione di memoria allocata. Gli attributi che abbiamo assegnato al programma da visualizzare dal file sono mostrati nell'output.

Conclusione

Abbiamo usato la funzione fstat() per accedere alle informazioni sul file. Per prima cosa abbiamo appreso la sintassi per la funzione fstat() spiegata con la descrizione completa dei parametri della funzione. Quindi, abbiamo scritto un programma per questa funzione in cui abbiamo prima avuto accesso all'autorizzazione del proprietario del file, quindi abbiamo letto il file e visualizzato gli attributi che volevamo dalle informazioni del file. Abbiamo fatto del nostro meglio per farti comprendere il concetto di fstat() e speriamo che ti possa aiutare nei tuoi programmi.