LSTAT -Funktion in c

LSTAT -Funktion in c
„Lstat () -Funktion ist im Grunde genommen eine Art von Systemaufruf, der mit unserem Betriebssystem zusammenhängt. Um die Details über die Funktion lstat () zu kennen, müssen wir zunächst wissen, was Systemaufrufe sind.

Systemanrufe geben eine Umgebung für den Service -Modus, der im Betriebssystem verfügbar ist. Unser Programm kann in zwei Modi ausgeführt werden. Einer von ihnen ist der Benutzermodus und ein anderer ist der Kernel -Modus. Wenn ein Programm im Kernel -Modus ausgeführt wird, hat das Programm das Recht, direkt auf Speicher, Hardware und andere Ressourcen zuzugreifen.

Die Systemaufrufe sind die Komponenten des Betriebssystems, die das Recht haben, alle Systemdateien zu verwenden.”

Was ist Lstat () -Funktion?

LStat () -Funktion steuert den gesamten Systemstatus und gibt die Informationen zu einem speziellen Link zurück, der als symbolischer Link bezeichnet wird. Die Funktion stat () & fstat () gibt die Informationen zur bestimmten Datei an, aber die Funktion lstat () bezieht sich auf einen Link, der die bestimmte Datei zeigt.

Syntax

Die Syntax der Lstat () -Funktion ist -
int lstat (const char *path, struct stat *buf);

Hier innerhalb der Funktion Lstat () werden wir zwei Parameter als Argument übergeben.

Der erste Parameter der Funktion ist ein Pfad, der Informationen über die Identifizierung und die wahrscheinliche oder tatsächliche Quelle der Datei gibt.

Ein weiterer Parameter ist Buff, der Informationen über die Adresse zur STAT -Struktur gibt. Diese Stat -Struktur enthält alle aktualisierten Informationen über die bestimmte Datei, die vom *BUF -Zeiger gezeigt wird.

Die Struktur der Lstat () -Funktion

Das System namens LStat () -Funktion gibt eine Struktur namens STAT -Struktur zurück. Die Datenmitglieder dieser Stat -Struktur sind:

  1. ST_MODE: Die Dateiberechtigungen und Dateitypinformationen.
  2. ST_INO: Informationen zum Inode.
  3. ST_DEV: Der Gerätename.
  4. ST_UID: Erhalten Sie die Identifizierung der Quelldatei.
  5. ST_GID: Erhalten Sie die Identifikationsgruppe der Quelldatei
  6. ST_SIZE: Die Größe der Datei.
  7. ST_ATIME: Erwähnen Sie das letzte Mal der verwendeten Datei.
  8. ST_CTIME: Erwähnen Sie die Zeit der Änderung der Metadaten der Datei. Beispiel: Dateiname Änderung.
  9. ST_MTime: Erwähnen Sie die Zeit, um den Inhalt der Datei zu ändern.
  10. ST_NLINK: Erwähnung der Anzahl des Verzeichniseintrags.
  11. ST_BLOCKS: Zählen Sie die Anzahl der gebrauchten Blöcke (512 Bytes).

Makros

Die LStat () -Funktion hat eine staste Struktur, die verschiedene Arten von Makros enthält. Diese Makros helfen der Funktion lstat (), die Art der Dateien zu erkennen. Der Name dieser Makros lautet:

  1. S_ISBLK (): Testen Sie für eine Blockspezialendatei.
  2. S_Iischr (): Untersuchen.
  3. S_isdir (): Dateityp ist ein Verzeichnis.
  4. S_isfifo (): Inspektion im Zusammenhang mit Rohr im System.
  5. S_isreg (): Untersuchen Sie die häufig verwendete Datei.
  6. S_islink (): Untersuchen Sie den Soft Link.
  7. S_issock (): Untersuchen Sie, ob die Datei ein Sockel ist.

Jetzt werden wir ein Programmierbeispiel sehen, um die LStat () -Systemanruffunktion zu demonstrieren.

Programmierbeispiel-1

#enthalten
#enthalten
#enthalten
#enthalten
#enthalten
#enthalten
int main ()

char fl [] = "t.c ", sln [] =" t.Verknüpfung" ;
strukturstat inf;
int fd;
if ((fd = creat (fl, s_iwusr))<0)
perror ("creat () error");
anders

schließen (fd);
if (link (FL, SLN)!= 0)
perror ("link () error");
anders

if (lstat (SLN, & Inf)!= 0)
perror ("lstat () error");
anders

Puts ("Wir erhalten Informationen von lstat () für eine Datei:");
printf ("Dateilinks:%d \ n", (int) Inf.st_nlink);
printf ("Datei UID:%d \ n", (int) inf.st_uid);
printf ("Datei Inode:%d \ n", (int) Inf.st_ino);
printf ("Datei gid:%d \ n", (int) Inf.st_gid);
printf ("Datei dev id:%d \ n", (int) Inf.st_dev);
printf ("Dateimodus:%08x \ n", Inf.ST_MODE);

UNLINK (SLN);

UNLINK (FL);

Rückkehr 0;

Ausgang

Erläuterung

Hier sehen wir eine Ausgabe, die die Funktion lstat () über den Status einer bestimmten Datei verwendet, die vom Programmierer erstellt wurde. In diesem Programm haben wir eine reguläre Datei erstellt und auch ihren symbolischen Link erstellt. Es wird die Informationen zu i-Node, Dev ID, Modus, No of Links, UID und GID angezeigt. LStat () -Funktion enthält alle detaillierten Informationen einer erstellten Datei und dessen entsprechender Soft Link.

Programmierbeispiel-2

Lassen Sie uns eine weitere detaillierte Implementierung der LSTAT () -Funktion sehen.

#enthalten
#enthalten
#enthalten
#enthalten
#enthalten
int main (int argc, char *argv [])

Struktur Stat A;
if (argc != 2)
fprintf (stderr, "Bitte geben Sie den Dateinamen als 1. Argument ein: %s \ n", argv [0]);
exit (exit_failure);

if (lstat (argv [1], & a) == -1)
perror ("ein Fehler für LSTAT");
exit (exit_failure);

printf ("Also der Eingabedateityp ist =>");
wenn ein.ST_MODE & S_IFMT) == S_ifdir)
printf ("Verzeichnis \ n");
sonst wenn (a.ST_MODE & S_IFMT) == S_ififo)
printf ("fifo/pipe \ n");
sonst wenn (a.ST_MODE & S_IFMT) == S_ifchr)
printf ("Zeichenvorrichtung \ n");
sonst wenn (a.ST_MODE & S_IFMT) == S_ifblk)
printf ("Block Device \ n");
sonst wenn (a.ST_MODE & S_IFMT) == S_ifreg)
printf ("normal \ n");
sonst wenn (a.ST_MODE & S_IFMT) == S_IFSOCK)
printf ("Socket \ n");
sonst wenn (a.ST_MODE & S_IFMT) == S_IFLNK)
printf ("symbolischer Link \ n");
anders
printf ("unbekannt \ n");
printf ("nein. der Linkliste:%ld \ n ", (lang) a.st_nlink);
printf ("Besitz: uid =%ld gid =%ld \ n",
(lang) a.st_uid, (lang) a.st_gid);
printf ("Inode No %ld \ n", (lang) a.st_ino);
printf ("Modus: %lo (Oktal) \ n",
(nicht signiert) a.ST_MODE);
printf ("Letzte Änderungszeit ist:%s", cTime (& a.st_ctime));
printf ("Letzte Zugriffszeit ist: %s", Cime (& a.st_atime));
printf ("Letzte Änderung des Inhalts der Dateizeit ist: %s", cTime (& a.st_mtime));
printf ("bevorzugte Länge der Blöcke von E/O: %ld Bytes \ n",
(lang) a.st_blkSize);
printf ("Die Länge der Datei ist: %lld Bytes \ n",
(lange lange) a.st_size);
printf ("Zählen Sie das Nein. von gebrauchten Blöcken %lld \ n ",
(lange lange) a.st_blocks);
exit (exit_success);

Ausgang

Erläuterung

Hier zeigen wir jede Aussicht auf die LStat () -Systemanruffunktion.

Bei der ersten Ausgabe geben wir einen Dateinamen ohne Pfadinformationen ein. Als Ausgabe erhalten wir die Verwendung des Programms. Das Programm benötigt einen Eingabedateinamen/Pfad als 1. Argument.

In der nächsten Ausgabe werden die Informationen zur Block -Gerätedatei angezeigt. Hier 5+0 Datensätze in und 5+0 Datensätze und der Eingabedateityp ist ein Blockgerät.

In der nächsten Ausgabe erstellen wir eine Datei namens “Papan_char_Device_fileWelcher Typ ist ein Zeichengerät. LStat () -Funktion hilft ihm, alle Informationen zu diesem Zeichengerät zu geben.

Danach werden wir ein Verzeichnis namens namens erstellen. “HabibpurWelcher Dateityp ist ein Verzeichnis. Lstat () erstellt alle Informationen zu dieser Datei.

Als nächstes erstellen wir eine andere Datei namens “Papan_fifo_fileDeren Dateityp ist FIFO/Pipe. Wir erhalten die LSTAT -Funktion zur Verfügung gestellten Informationen für die Datei als Ausgabe.

Danach werden wir einen symbolischen Link namens herstellenPuja.txt"Einer Datei namens"Avishek.txtUnd erhalten Sie die LSTAT -Funktion zur Verfügung gestellten Informationen für die Datei als Ausgabe.

Als nächstes werden wir den Dateityp von “überprüfenAvishek.txt,Das ist eine reguläre Datei [bereits im vorherigen Schritt erstellt].

Und zuletzt werden wir eine andere Datei namens erstellen. “ nadia_socket_file.SockeWelcher Dateityp ist ein Socket und erhalten Sie alle detaillierten Informationen zu dieser Datei.

Mit Hilfe der Funktion lstat () werden wir alle Dateien erkennen.

Abschluss

Hier haben wir jeden Aspekt des LStat () -Funktionssystemaufrufs erwähnt. Wenn wir alle Merkmale und Implementierungstypen der LStat () -Funktion sehen, können wir klar verstehen, dass es sich um eine sehr wichtige Systemaufruffunktion handelt, um alle Attribute einer bestimmten Datei zu erhalten, die wir in unserem System erstellt haben, und das System wird nach dem Reagieren nach Anlagen nach Anlehnung nach nach zum Befehl der Anweisung des Funktionsbefehls lstat ().