2015-10-01 28 views
6

Piszę zadanie szkolne w C, aby przeszukać system plików dla katalogów, zwykłych plików i dowiązań symbolicznych. Na razie używam lstat, aby uzyskać informacje o przedmiotach.Różnica między lstat fstat i stat w C

Jaka jest różnica między wywołaniami systemowymi lstatfstat i stat?

+5

To właśnie mówi [instrukcja obsługi] (http://man7.org/linux/man-pages/man2/stat.2.html). –

+2

Dajcie spokój, musicie przynajmniej wysilić się, zanim zapytacie: – KevinDTimm

+2

Odważyliście się na RTFM. – alk

Odpowiedz

31

Byłem też szukając stat vs lstat vs fstat i chociaż nie jest już odpowiedź na to pytanie, chciałbym zobaczyć to sformatowane tak:

lstat() jest identyczna stat(), oprócz tego, że jeśli ścieżka jest symboliczny link, to zwraca informacje o samym odnośniku, a nie o pliku , do którego się odnosi.

fstat() jest identyczna stat(), chyba że akt, o którym informacje mają być pobierane jest określony przez deskryptor fd.

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

1

googlowania następujących: lstat v fstat V Stat

pierwszy łącza to strona man, który opisuje te różnice: http://manpages.ubuntu.com/manpages/hardy/man2/stat.2.html

wymienione na stronie jest następująca prosta odpowiedź: stat() statystyki plik wskazywany przez ścieżkę i wypełnia buf. lstat() jest identyczny z stat(), z tym wyjątkiem, że jeśli ścieżka jest dowiązaniem symbolicznym, to link jest statem, a nie plikiem, do którego się odnosi. Funkcja fstat() jest identyczna z funkcją stat(), z tym że plik, który ma być statystyką, jest określony przez deskryptor pliku fd.

0

Podobieństwo: Obaj podejmują pliku jako argumenty.

Różnica: Za każdym razem, gdy nazwa pliku jest dowiązaniem symbolicznym, stat() zwraca atrybuty lub informacje i-węzły o pliku docelowym powiązanym z łączem. Natomiast lstat() zwraca atrybuty tylko linku.

Skorzystaj ze strony podręcznika dla stat() vs lstat().