我用 C 编写了一个学校作业,以在文件系统中搜索目录、常规文件和符号链接。现在我lstat
用来获取有关项目的信息。
lstat
fstat
那么和stat
系统调用有什么区别呢?
我也在寻找stat vs lstat vs fstat
,虽然这个问题已经有了答案,但我希望看到它的格式如下:
lstat()
与 相同stat()
,除了如果 pathname 是符号链接,则它返回有关链接本身的信息,而不是它所引用的文件。
fstat()
与 相同stat()
,不同之处在于要检索其信息的文件由文件描述符(而不是文件名)指定。
相似之处:它们都以文件名作为参数。
区别:只要文件名是符号链接,stat() 就会返回与链接关联的目标文件的属性或 inode 信息。而 lstat() 仅返回链接的属性。
请参阅 stat() 与 lstat() 的手册页。
谷歌搜索以下内容: 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 指定。