C中lstat fstat和stat的区别

Difference between lstat fstat and stat in C

我正在用 C 编写一份学校作业,以在文件系统中搜索目录、常规文件和符号链接。现在我使用 lstat 来获取有关项目的信息。

那么lstat fstatstat 系统调用有什么区别?

谷歌搜索以下内容:lstat v fstat v stat

提供的第一个 link 是描述这些差异的手册页:http://manpages.ubuntu.com/manpages/hardy/man2/stat.2.html

页面上列出的是以下简单答案: stat() 统计path指向的文件并填充buf。 lstat() 与 stat() 相同,只是如果路径是符号 link,则 link 本身是 stat-ed,而不是它引用的文件。 fstat() 与 stat() 相同,只是要统计的文件由文件描述符 fd 指定。

我也在搜索 stat vs lstat vs fstat,虽然这个问题已经有了答案,但我希望看到它的格式如下:

lstat() is identical to stat(), except that if pathname is a symbolic link, then it returns information about the link itself, not the file that it refers to.

fstat() is identical to stat(), except that the file about which information is to be retrieved is specified by a file descriptor (instead of a file name).

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

相同点:它们都以文件名作为参数。

区别:每当文件名是符号 link 时,stat() returns 是有关与 link 关联的目标文件的属性或 inode 信息。而 lstat() return 只有 link.

的属性

请参阅 stat() 与 lstat() 的联机帮助页。