Я пишу школьное задание на C для поиска в файловой системе каталогов, обычных файлов и символических ссылок. Сейчас я использую lstat
для получения информации об элементах.
Так в чем же разница между системными вызовами lstat
fstat
и stat
?
Я пишу школьное задание на C для поиска в файловой системе каталогов, обычных файлов и символических ссылок. Сейчас я использую lstat
для получения информации об элементах.
Так в чем же разница между системными вызовами lstat
fstat
и stat
?
Я также искал stat vs lstat vs fstat
, и хотя ответ на этот вопрос уже есть, я хотел бы, чтобы он был отформатирован следующим образом:
lstat()
идентичноstat()
, за исключением того, что если pathname является символической ссылкой, то он возвращает информацию о самой ссылке, а не о файле, на который она ссылается.
fstat()
идентиченstat()
, за исключением того, что файл, информацию о котором необходимо получить, определяется дескриптором файла (вместо имени файла).
http://man7.org/linux/man-pages/man2/stat.2.html
Сходство: они оба принимают имя файла в качестве аргументов.
Отличие: всякий раз, когда имя файла является символической ссылкой, stat() возвращает атрибуты или информацию об индексном узле целевого файла, связанного со ссылкой. Принимая во внимание, что lstat() возвращает атрибуты только ссылки.
Обратитесь к справочной странице для stat() против lstat().
погуглив следующее: lstat v fstat v stat
первая предоставленная ссылка — это справочная страница, описывающая эти различия: http://manpages.ubuntu.com/manpages/hardy/man2/stat.2.html
на странице приведен следующий простой ответ: stat() регистрирует файл, на который указывает путь, и заполняет buf. lstat() идентичен stat(), за исключением того, что если путь является символической ссылкой, то статистикой является сама ссылка, а не файл, на который она ссылается. Функция fstat() идентична функции stat(), за исключением того, что файл, который необходимо просмотреть, определяется файловым дескриптором fd.