我正在用C语言写作业,要在文件系统中搜索目录、常规文件和符号链接。现在我使用lstat
来获取项目的信息。
那么lstat
、fstat
和stat
系统调用之间的区别是什么?
我也在搜索stat vs lstat vs fstat
,虽然这个问题已经有了答案,但我希望看到它的格式是这样的:
http://man7.org/linux/man-pages/man2/stat.2.html
lstat()
与stat()
相同,除了pathname是一个符号链接,那么它返回关于链接本身的信息,而不是文件
fstat()
与stat()
相同,不同之处在于要检索的信息由文件描述符指定(而不是文件名).
相似之处:它们都以filename作为参数
差异:当文件名是符号链接时,stat()返回与该链接关联的目标文件的属性或inode信息。而lstat()只返回链接的属性。
参考手册stat()和lstat()
用google搜索lstat v fstat v stat
提供的第一个链接是描述这些差异的手册页:http://manpages.ubuntu.com/manpages/hardy/man2/stat.2.html
页面上列出的是以下简单的答案:Stat()统计由path指向的文件并填充buf。Lstat()与stat()相同,不同之处在于,如果path是一个符号链接,那么将统计链接本身,而不是它所引用的文件。Fstat()与stat()相同,除了要统计的文件是由文件描述符fd指定的。