c - 如何检查符号链接(symbolic link)是否指向目录

标签 c

我目前正在重新编写“ls”命令以进行学习。但是,当我浏览文件时: 当我尝试打开符号链接(symbolic link)指向的路径的“文件夹”时,可能会出错。因为它不是目录(我认为所有符号链接(symbolic link)都指向文件夹)。

如何检查它是否指向目录? (我看手册,stat,dir ..)

最佳答案

I thought all symbolic links pointed to folders

没有。符号链接(symbolic link)是对另一个路径的间接引用。该其他路径可以引用任何类型的文件,该文件可以在任何已安装的文件系统中表示,或者根本没有文件(即它可以是断开的链接)。

How to check that it points to a directory?

您提到了 stat() 函数,但是为了重新实现 ls,您应该主要使用 lstat()。不同之处在于,当指定路径引用符号链接(symbolic link)时,stat 返回有关链接目标路径的信息,而 lstat 返回有关链接本身的信息(包括有关链接的信息)文件类型,从中您可以看出它一个链接)。

如果遇到符号链接(symbolic link),只需使用 stat() 再次检查相同的路径,找出它指向的文件类型。 stat() 会递归解析符号链接(symbolic link)来发现最终目标的信息,只有当它是一个损坏的链接时,它才是一个符号链接(symbolic link)。无论如何,您不需要为了您的特定目的区分损坏的链接和任何其他形式的非目录。

关于c - 如何检查符号链接(symbolic link)是否指向目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56066067/

相关文章:

c - 从另一个数组初始化 const 数组

c - 将 int 数组快速转换为 fp 以进行音频处理

c - 在不生成重复项的情况下查找字符串的所有唯一排列

c++ - 将空参数列表函数从 C 转换为 C++

c - 没有存档文件的静态链接如何工作?

c - 练习程序不按预期制造死锁

在c中的循环中创建结构体变量

Sqlite API bool 访问

c - 在 C 中的 for header 的第一部分中使用条件而不是赋值

c - 简单的 C++ Web 服务器发送错误的 header