Разница между lstat fstat и stat в C

Я пишу школьное задание на C для поиска в файловой системе каталогов, обычных файлов и символических ссылок. Сейчас я использую lstat для получения информации об элементах.

Так в чем же разница между системными вызовами lstat fstat и stat?


person uzr    schedule 01.10.2015    source источник
comment
Это именно то, что говорится в руководстве.   -  person Kerrek SB    schedule 01.10.2015
comment
Люди, вы должны хотя бы приложить некоторые усилия, прежде чем спрашивать.   -  person KevinDTimm    schedule 01.10.2015
comment
Сейчас это самый популярный запрос в Google по этому вопросу. Я действительно не думаю, что было бы так ужасно ответить на него. К счастью, кто-то это сделал.   -  person mpen    schedule 24.10.2016


Ответы (3)


Я также искал stat vs lstat vs fstat, и хотя ответ на этот вопрос уже есть, я хотел бы, чтобы он был отформатирован следующим образом:

lstat() идентично stat(), за исключением того, что если pathname является символической ссылкой, то он возвращает информацию о самой ссылке, а не о файле, на который она ссылается.

fstat() идентичен stat(), за исключением того, что файл, информацию о котором необходимо получить, определяется дескриптором файла (вместо имени файла).

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

person user619271    schedule 17.05.2016

Сходство: они оба принимают имя файла в качестве аргументов.

Отличие: всякий раз, когда имя файла является символической ссылкой, stat() возвращает атрибуты или информацию об индексном узле целевого файла, связанного со ссылкой. Принимая во внимание, что lstat() возвращает атрибуты только ссылки.

Обратитесь к справочной странице для stat() против lstat().

person bharat nc    schedule 20.02.2017

погуглив следующее: lstat v fstat v stat

первая предоставленная ссылка — это справочная страница, описывающая эти различия: http://manpages.ubuntu.com/manpages/hardy/man2/stat.2.html

на странице приведен следующий простой ответ: stat() регистрирует файл, на который указывает путь, и заполняет buf. lstat() идентичен stat(), за исключением того, что если путь является символической ссылкой, то статистикой является сама ссылка, а не файл, на который она ссылается. Функция fstat() идентична функции stat(), за исключением того, что файл, который необходимо просмотреть, определяется файловым дескриптором fd.

person Bryan S.    schedule 01.10.2015