Unterschied zwischen lstat fstat und stat in C

Lesezeit: 2 Minuten

Benutzeravatar von uzr
uzr

Ich schreibe eine Schulaufgabe in C, um ein Dateisystem nach Verzeichnissen, regulären Dateien und Symlinks zu durchsuchen. Im Moment benutze ich lstat um Informationen zu Artikeln zu erhalten.

Was ist also der Unterschied zwischen lstat fstat und stat Systemaufrufe?

  • Es ist genau das, was das Handbuch sagt.

    – Kerrek SB

    1. Oktober 2015 um 19:09 Uhr


  • Kommt schon Leute, man muss sich zumindest anstrengen, bevor man fragt

    – KevinDTimm

    1. Oktober 2015 um 19:11 Uhr


  • Dies ist jetzt der Top-Treffer bei Google für diese Frage. Ich glaube wirklich nicht, dass es so schrecklich wäre, darauf tatsächlich zu antworten. Zum Glück hat es jemand getan.

    – mp

    24. Oktober 2016 um 16:43 Uhr

Benutzeravatar von user619271
Benutzer619271

Ich war auch auf der Suche nach stat vs lstat vs fstat und obwohl es bereits eine Antwort auf diese Frage gibt, möchte ich sie so formatiert sehen:

lstat() ist identisch mit stat()außer dass, wenn pathname ein symbolischer Link ist, Informationen über den Link selbst zurückgegeben werden, nicht über die Datei, auf die er verweist.

fstat() ist identisch mit stat()außer dass die Datei, über die Informationen abgerufen werden sollen, durch einen Dateideskriptor (anstelle eines Dateinamens) angegeben wird.

http://man7.org/linux/man-pages/man2/stat.2.html

Ähnlichkeit: Beide nehmen Dateinamen als Argumente.

Unterschied: Wenn der Dateiname ein symbolischer Link ist, gibt stat() die Attribute oder Inode-Informationen über die mit dem Link verknüpfte Zieldatei zurück. Während lstat() nur die Attribute des Links zurückgibt.

Siehe die Manpage für stat() vs. lstat().

Folgendes googeln: lstat v fstat v stat

Der erste bereitgestellte Link ist eine Manpage, die diese Unterschiede beschreibt: http://manpages.ubuntu.com/manpages/hardy/man2/stat.2.html

Auf der Seite ist die folgende einfache Antwort aufgeführt: stat() zeigt die Datei an, auf die der Pfad zeigt, und füllt buf aus. lstat() ist identisch mit stat(), außer dass, wenn path ein symbolischer Link ist, der Link selbst angegeben wird, nicht die Datei, auf die er verweist. fstat() ist identisch mit stat(), außer dass die anzugebende Datei durch den Dateideskriptor fd spezifiziert wird.

1393650cookie-checkUnterschied zwischen lstat fstat und stat in C

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy