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

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

так в чем разница между lstat fstat и

3 ответов


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

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

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

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


сходство: они оба принимают filename в качестве аргументов.

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

обратитесь к manpage для stat () vs lstat ().


googling следующее: lstat v fstat v stat

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

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