36

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

lstat fstat那么和stat系统调用有什么区别呢?

4

3 回答 3

79

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

lstat()与 相同stat(),除了如果 pathname 是符号链接,则它返回有关链接本身的信息,而不是它所引用的文件。

fstat()与 相同stat(),不同之处在于要检索其信息的文件由文件描述符(而不是文件名)指定。

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

于 2016-05-17T06:30:07.857 回答
4

相似之处:它们都以文件名作为参数。

区别:只要文件名是符号链接,stat() 就会返回与链接关联的目标文件的属性或 inode 信息。而 lstat() 仅返回链接的属性。

请参阅 stat() 与 lstat() 的手册页。

于 2017-02-20T00:26:52.400 回答
1

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

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

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

于 2015-10-01T20:50:14.890 回答