Funzione fstat in c

Funzione fstat in c

La funzione fstat () chiama il sistema per restituire le informazioni (per quanto riguarda alcuni file) che dipende 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 in cui il buffer sta indicando. Il tipo di ritorno di questa funzione è un numero intero. Restituisce il valore "0" se il programma viene eseguito correttamente. Altrimenti, 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 le Fildes della funzione hanno 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 della memoria (struttura) Il buffer punta a scrivere le informazioni sul file non ha abbastanza memoria allocata per la dimensione del file.

Procedura

Questo articolo segue l'ordine sequenziale per implementare la funzione fstat () per ottenere le informazioni sul file. Impariamo prima 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 consente l'accesso del programma alle informazioni sul file è menzionato nella riga seguente:

$#include
$ int fstat (int fildes, struct stat *buf);

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 di restituzione 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 di "Struttion Stat" che indica la struttura in cui vogliamo archiviare i dati sul file. Questa è una breve descrizione dei parametri di input per la funzione fstat ().

Esempio

Utilizziamo la descrizione pervocata ed eseguiamo un programma per ottenere le informazioni su qualsiasi file / specifico tramite il nostro programma. Scriviamo questo programma nel compilatore Microsoft Visual Studio C 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 aggiungilo al file di origine del progetto. Il prossimo passo dopo la creazione del progetto è chiamare tutte le librerie richieste per le funzioni che potremmo utilizzare più avanti nel programma. Poiché stiamo implementando l'esempio per la funzione fstat () in questo articolo, dobbiamo includere il file di intestazione "sys/ stat.H ". Per le informazioni sul file, dobbiamo conoscere il tipo di dispositivo in cui esiste il file. Per conoscere il tipo di dati per il dispositivo, includiamo il tipo di intestazione ". h "nel programma.

Le informazioni sul file devono includere il tempo in cui il file è stato aperto l'ultima volta e la modifica apportata in esso. Per accedere a queste funzioni di chiamata temporale, aggiungiamo il file di intestazione "tempi. h "e" fcntl. ”H” Intestazione per le funzioni di autorizzazione del file. L'ultima intestazione “stdio. Il file 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
$#include

Dopo che i file di intestazione precedentemente menzionati vengono importati correttamente nel programma, ora creiamo il programma per ottenere le informazioni su un file specifico. Dichiariamo la funzione che ha il tipo di ritorno come "int" con il nome "principale". In questa funzione principale, dichiariamo un array "char" e gli assegniamo il nome del file per cui dobbiamo conoscere un'informazione. Quindi, definiamo una "informazione stat" con il tipo di dati "struttura". Questa struttura è un luogo in cui archiviamo le informazioni sul file.

Quindi, definiamo un'altra variabile con il nome "File_Descriptor" con il tipo di dati come "intero". In "If Condition", chiediamo l'autorizzazione per le operazioni di lettura e scrittura per il file se esiste, passando la "s_iwusr" e il nome dell'array alla funzione "create ()" che richiede le autorizzazioni per il file esiste o crea un nuovo file altrimenti. Passiamo questa funzione create () alla "condizione if" che afferma se il valore della funzione create () è inferiore a zero, quindi crea un errore che il file deve essere creato. Se il fstat () con i parametri come "file_descriptor" e "informazioni" e "l'indirizzo della posizione in cui sono archiviate le informazioni sul file" non è uguale a zero, visualizziamo il valore restituito da fstat () che è le informazioni del file. E stampiamo le informazioni sotto forma di attributi, E.G. ID dispositivo in cui viene archiviato il file, il numero di inode del dispositivo, la modalità di protezione del file, l'ID utente, l'ID gruppo e il numero del collegamento (forma hard).

Dopo aver visualizzato questi attributi, usciamo dalle istruzioni e chiudiamo il file utilizzando il metodo Close (). Quindi, Unkk il file chiamando il metodo UNLINK ().

#includere
#includere
#includere
#includere
#includere
principale()
char array [] = "amp.file";
Informazioni sulle statistiche della struttura;
int filedeScriptor;
if ((filedeScriptor = creay (array, s_iwusr)) < 0)
error ("create () errore");
altro
if (FSTAT (FileScriptor e Information) != 0)
error ("fstat () errore");
altro
put ("fstat () valori:");
printf ("inode: %d \ n", (int) info.st_ino);
printf ("dispositivo_id: %d \ n", (int) info.st_dev);
printf ("modalità del dispositivo: %08x \ n", info.st_mode);
printf ("no_of_hard_links: %d \ n", info.st_nlink);
printf ("u_id: %d \ n", (int) info.st_uid);
printf ("g_id: %d \ n", (int) info.st_gid);

chiudere (filedeScriptor);
UNLINK (array);

Il programma accederà innanzitutto l'autorizzazione per l'operazione del file e quindi legge i dati e lo scriverà nella posizione di memoria allocata. Gli attributi che abbiamo dato al programma da visualizzare dal file sono mostrati nell'output.

Conclusione

Abbiamo usato la funzione fstat () per accedere alle informazioni sul file. Abbiamo imparato per la prima volta 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 accettato per la prima volta l'autorizzazione del proprietario del file e quindi abbiamo letto il file e visualizzato gli attributi che volevamo dalle informazioni del file. Abbiamo fatto del nostro meglio nel farti capire il concetto di fstat () e speriamo che ti aiuti nei tuoi programmi.