Systemaufrufe vom Linux -Kernel werden in der C -Programmiersprache über GLIBC freigelegt. Wenn ein Systemaufruf verwendet wird, kommunizieren Sie mit dem Betriebssystem und über die Parameter, die an Systemaufruffunktionen zurückgegeben werden (Rückgabewerte).
Statussystemanruf:
STAT -Systemaufruf ist ein Systemaufruf in Linux, um den Status einer Datei zu überprüfen, z. B. um zu überprüfen, wann auf die Datei zugegriffen wurde. Der STAT () -Systemanruf gibt tatsächlich Dateiattribute zurück. Die Dateiattribute eines Inodes werden im Grunde genommen von der Funktion stat () zurückgegeben. Ein Inode enthält die Metadaten der Datei. Ein Inode enthält: der Typ der Datei, die Größe der Datei, wenn die Datei zugegriffen wurde (geändert, gelöscht), dh Zeitstempel und der Pfad der Datei, der Benutzer -ID und der Gruppen -ID, Links der Datei und physische Adresse von Dateiinhalten.
Wir können sagen, dass Inode alle Daten enthält, die für den STAT () -Systemanruf erforderlich sind, und es ist die Indexnummer für die Datei, die in der Inode -Tabelle gespeichert ist. Wenn Sie eine Datei erstellen, wird eine Inode -Nummer für diese Datei erstellt. Verwenden von STAT -Systemen Die Systemtabellen können angezeigt werden.
Syntax des C -Statistik -Systemaufrufs:
Um den STAT -Systemaufruf in der C -Programmiersprache zu verwenden, müssen Sie die folgende Header -Datei einfügen:
#enthaltenSTAT wird verwendet, um den Status einer Datei zu erhalten. Die Syntax des C -STAT -Systemaufrufs ist für jedes Betriebssystem möglicherweise nicht gleich. In Linux lautet die Syntax für den STAT -Systemaufruf wie folgt:
int stat (const char *path, struct stat *buf)Der Rückgabetyp der Funktion in INT, wenn die Funktion erfolgreich ausgeführt wird, wird 0 zurückgegeben, wenn Fehler vorliegen, -1 wird zurückgegeben.
Hier const char *Pfad Gibt den Namen der Datei an. Wenn der Dateipfad ein symbolischer Link ist, müssen Sie den Link anstelle des Dateinamens angeben.
In der Funktion haben wir dann eine Stat -Struktur, in der die Daten oder Informationen zur Datei gespeichert sind, bei der ein Zeiger namens benannt wird buf, Dies wird als Paramteter übergeben und während der Ausführung des Anrufs ausgefüllt und vom Benutzer nach dem Anruf lesbar.
Stat -Struktur:
Die in der Header -Datei definierte STAT -Struktur enthält die folgenden Felder:
strukturstatBeschreibung:
Flaggen | Beschreibung | Flaggenwert |
---|---|---|
S_ifmt | Eine Bitmaske, mit der der Moduswert einer Datei abgerufen wird | 0170000 |
S_ifsock | Eine Dateikonstante der Steckdose | 0140000 |
S_iflink | Eine Dateikonstante des symbolischen Verknüpfung | 0120000 |
S_ifreg | Dateikonstante für die reguläre Datei | 0100000 |
S_ifblk | Dateikonstante für die Blockdatei | 0060000 |
S_ifdir | Dateikonstante für Verzeichnisdatei | 0040000 |
S_ifchr | Dateikonstante für die Zeichendatei | 0020000 |
S_ififo | Eine Dateikonstante von FIFO | 0010000 |
S_isuid | Benutzer -ID -Bit festlegen | 0004000 |
S_isgid | Gruppen -ID -Bit einstellen | 0002000 |
S_isvtx | Sticky -Bit, das den gemeinsamen Text anzeigt | 0001000 |
S_irwxu | Eigentümerberechtigungen (lesen, schreiben, ausführen) | 00700 |
S_irusr | Lesen Sie die Berechtigungen für den Eigentümer | 00400 |
S_iwusr | Schreiben Sie Berechtigungen für den Eigentümer | 00200 |
S_ixusr | Berechtigungen für den Eigentümer ausführen | 00100 |
S_irwxg | Gruppenberechtigungen (lesen, schreiben, ausführen) | 00070 |
S_irgrp | Lesen Sie die Berechtigungen für die Gruppe | 00040 |
S_iwgrp | Schreiben Sie Berechtigungen für die Gruppe | 00020 |
S_ixgrp | Berechtigungen für die Gruppe ausführen | 00010 |
S_irwxo | Berechtigungen für andere (lesen, schreiben, ausführen) | 00007 |
S_iroth | Lesen Sie die Berechtigungen für andere | 00004 |
S_IWOTH | Schreiben Sie Berechtigungen für andere | 00002 |
S_ixoth | Berechtigungen für andere ausführen | 00001 |
So verwenden Sie den Statussystemanruf:
Das folgende Beispiel zeigt, wie der Status -System -Aufruf in der C -Programmiersprache unter Linux, Ubuntu, verwendet wird.
BEISPIEL 1:
Im folgenden Code finden wir den Modus einer Datei:
CODE:
#enthaltenKompilieren und Ausführen des Programms kehrt wie unten zurück:
In diesem Cod. Der Zeiger auf STAT -Struktur wird dann zum Zugriff auf ST_MODE verwendet, wodurch der Modus der Datei mithilfe der Printf -Anweisung angezeigt wird.
Die Header -Datei wird verwendet, sodass Sie den Status -System -Aufruf verwenden können. Die Header -Datei ist die Standardeingangs-/Ausgabebibliotheksdatei, sodass Sie Printf oder Scanf in Ihrem C -Code verwenden können.
Beispiel 2:
Im folgenden Code erhalten wir Informationen zur Datei mit dem Status -System -Aufruf:
CODE:
#enthaltenAUSGANG:
Im obigen C -Code haben wir den Namen der Datei eingegeben, und wenn die Datei nicht vorhanden ist, wird die Ausführung des Programms gestoppt. Dies wird im folgenden Bild demonstriert:
Wenn unsere Datei vorliegt, wird die Funktion SFILE (N) aufgerufen, in der wir den Namen der Datei übergeben haben. In der Funktion haben wir zunächst einen Status -System -Aufruf verwendet. Wenn stat () -1 zurückgibt, muss ein Fehler ein Fehler, sodass eine Nachricht gedruckt wird und die Ausführung des Programms gestoppt wird.
In printf Anweisung haben wir dann den Namen Funktion und das Punktabscheider verwendet, um auf die Datenmitglieder von zuzugreifen Statruction.
Dann haben wir für die Dateimodus auf die Makros oder Flags von ST_MODE zugegriffen. Hier wird logisch und operator verwendet, um die jeweiligen Modi zu drucken. Wir haben auf Berechtigungen für Benutzer, Gruppe und andere für die angegebene Datei nachgefragt (Dateiname vom Benutzer eingegeben).
Damit können Sie sehen. Wenn Sie eine Frage haben, fühlen Sie uns über einen Kommentarbereich hin.