Fstat-Funktion in C

Fstat Funktion In C



Die Funktion fstat() ruft das System auf, um die Informationen (in Bezug auf eine Datei) zurückzugeben, die vom Deskriptor dieser Datei abhängen. Diese Funktion erhält die Informationen für die Datei, die dem Dateideskriptor, auch bekannt als 'fildes', zugeordnet ist, und schreibt diese Informationen dann in den Speicherort, auf den der Puffer zeigt. Der Rückgabetyp dieser Funktion ist eine ganze Zahl. Es gibt den Wert „0“ zurück, wenn das Programm erfolgreich ausgeführt wird. Andernfalls gibt es im Falle einer fehlgeschlagenen Ausführung eine „-1“ an die Funktion zurück. Der Ausführungsfehler für diese Funktion kann auf bestimmte Gründe zurückzuführen sein, z. B. wenn die Datei der Funktion einen ungültigen Deskriptor für die Datei hat, wenn der Lesefehler für Ein- und Ausgabe aus der Datei auftritt und wenn der Speicherort (Struktur) wo ist Der Puffer weist darauf hin, dass die Dateiinformationen nicht genügend zugewiesenen Speicher für die Dateigröße haben.

Verfahren

Dieser Artikel folgt der sequenziellen Reihenfolge zum Implementieren der Funktion fstat() zum Abrufen der Dateiinformationen. Wir lernen zuerst die Syntax für diese Funktion, die für diese Funktion erforderlichen Parameter. Anschließend verwenden wir diese Syntax, um einige Beispiele für die Funktion fstat() auszuführen.







Syntax

Die Methode zum Deklarieren der Funktion fstat(), die den Zugriff des Programms auf die Dateiinformationen ermöglicht, wird in der folgenden Zeile erwähnt:



$ #include
$ int Zustand ( int Fildes , Struktur Stat * buf ) ;

Wann immer wir die Funktion in unserem Programm aufrufen müssen, müssen wir zuerst die Header-Dateien importieren, die diese Funktion als „sys/stat.h“ unterstützen. Der Rückgabetyp der Funktion ist immer „int“ und der Parameter enthält „fildes“ mit dem Datentyp „int“. Fildes ist ein Deskriptor für die Datei, über die wir die Informationen wissen möchten. Ein weiterer Parameter, der der Funktion übergeben wird, ist der Pointer „buf“. Es ist ein „struct stat“-Zeiger, der auf die Struktur zeigt, in der wir die Daten über die Datei speichern möchten. Dies ist eine kurze Beschreibung der Eingabeparameter für die Funktion fstat().



Beispiel

Wir verwenden die zuvor erwähnte Beschreibung und führen ein Programm aus, um die Informationen über eine beliebige / bestimmte Datei durch unser Programm zu erhalten. Wir schreiben dieses Programm im Microsoft Visual Studio C-Compiler für die Ausführung. Wir beginnen mit dem Beispiel, indem wir zuerst ein Projekt erstellen und es dann zu den C-Repositories im Visual Studio hinzufügen. Um das Projekt zu den C-Dateien hinzuzufügen, schließen wir das „.c“ in den Projektnamen ein und fügen es der Quelldatei des Projekts hinzu. Der nächste Schritt nach der Erstellung des Projekts besteht darin, alle erforderlichen Bibliotheken für die Funktionen aufzurufen, die wir später im Programm verwenden können. Da wir in diesem Artikel das Beispiel für die Funktion fstat() implementieren, müssen wir die Header-Datei „sys/stat.h“ einbinden. Für die Dateiinformationen müssen wir den Gerätetyp kennen, auf dem die Datei vorhanden ist. Um den Datentyp für das Gerät zu kennen, fügen wir den Header „type. h“ im Programm.





Die Dateiinformationen müssen den Zeitpunkt des letzten Öffnens der Datei und die darin vorgenommene Änderung enthalten. Um auf diese Zeitaufruffunktionen zuzugreifen, fügen wir die Header-Datei „times. h“ und die „fcntl. h“ Header für die Dateiberechtigungsfunktionen. Der letzte Header „stdio. h“-Datei ist ebenfalls im Programm enthalten, um die Methoden printf() und scanf() im Programm aufzurufen. Die Header-Dateien, die wir besprochen haben, um in das Programm aufgenommen zu werden, lauten wie folgt:

$ #include
$ #include
$ #include
$ #include
$ #include

Nachdem die zuvor erwähnten Header-Dateien erfolgreich in das Programm importiert wurden, bauen wir nun das Programm, um die Informationen zu einer bestimmten Datei zu erhalten. Wir deklarieren die Funktion mit dem Rückgabetyp „int“ mit dem Namen „main“. In dieser Hauptfunktion deklarieren wir ein „char“-Array und weisen ihm den Namen der Datei zu, für die wir Informationen benötigen. Dann definieren wir eine „stat information“ mit dem Datentyp „struct“. Diese Struktur ist ein Ort, an dem wir die Informationen über die Datei speichern.



Dann definieren wir eine weitere Variable mit dem Namen „file_descriptor“ mit dem Datentyp „integer“. In der „if-Bedingung“ bitten wir um Erlaubnis für die Lese- und Schreiboperationen für die Datei, falls vorhanden, und übergeben „S_IWUSR“ und den Namen des Arrays an die „create()“-Funktion, die die Berechtigungen für die Datei aufruft, wenn es existiert oder erstellen Sie andernfalls eine neue Datei. Wir übergeben diese create()-Funktion an die „if-Bedingung“, die angibt, wenn der Wert der create()-Funktion kleiner als Null ist, dann wird ein Fehler erzeugt, dass die Datei erstellt werden muss. Wenn fstat() mit Parametern wie „file_descriptor“ und „information“ und „die Adresse des Speicherorts, an dem die Dateiinformationen gespeichert sind“ nicht gleich Null ist, zeigen wir den von fstat() zurückgegebenen Wert an, der die Informationen der Datei darstellt . Und wir drucken die Informationen in Form von Attributen, z. Geräte-ID, in der die Datei gespeichert ist, die Inode-Nummer des Geräts, der Schutzmodus der Datei, die Benutzer-ID, die Gruppen-ID und die Nummer des Links (harte Form).

Nachdem wir diese Attribute angezeigt haben, verlassen wir die Anweisungen und schließen die Datei mit der Methode close(). Heben Sie dann die Verknüpfung der Datei auf, indem Sie die Methode unlink() aufrufen.

#include
#include
#include
#include
#include

hauptsächlich ( ) {
verkohlen Reihe [ ] = 'amp.file' ;
Struktur Statistikinformationen ;
int Dateideskriptor ;
wenn ( ( Dateideskriptor = gemacht ( Reihe , S_IWUSR ) ) < 0 )
Pech ( 'create()-Fehler' ) ;
anders {
wenn ( Zustand ( Dateideskriptor , & Information ) != 0 )
Pech ( 'fstat()-Fehler' ) ;
anders {
setzt ( 'fstat() Werte:' ) ;
Druckf ( ' Inode: %d \n ' , ( int ) die Info. st_ino ) ;
Druckf ( ' Geräte-ID: %d \n ' , ( int ) die Info. st_dev ) ;
Druckf ( ' Modus des Geräts: %08x \n ' , die Info. st_mode ) ;
Druckf ( ' no_of_hard_links: %d \n ' , die Info. st_nlink ) ;
Druckf ( 'u_id: %d \n ' , ( int ) die Info. st_uid ) ;
Druckf ( ' g_id: %d \n ' , ( int ) die Info. st_gid ) ;
}
nah dran ( Dateideskriptor ) ;
Verknüpfung aufheben ( Reihe ) ;
}
}

Das Programm greift zuerst auf die Berechtigung für die Dateioperation zu und liest dann die darin enthaltenen Daten und schreibt sie in den zugewiesenen Speicherplatz. Die Attribute, die wir dem Programm zur Anzeige aus der Datei gegeben haben, werden in der Ausgabe angezeigt.

Fazit

Wir haben die Funktion fstat() verwendet, um auf die Dateiinformationen zuzugreifen. Wir haben zuerst die Syntax für die Funktion fstat() erklärt, die mit der vollständigen Beschreibung der Parameter der Funktion erklärt wurde. Dann haben wir ein Programm für diese Funktion geschrieben, in dem wir zuerst auf die Erlaubnis unseres Dateibesitzers zugegriffen und dann die Datei gelesen und die Attribute angezeigt haben, die wir aus den Informationen der Datei wollten. Wir haben unser Bestes versucht, Ihnen das Konzept von fstat() verständlich zu machen, und wir hoffen, dass es Ihnen in Ihren Programmen helfen wird.