我目前正在重新编码“ls”命令来学习。但是,当我浏览文件时:当我尝试打开符号链接指向的路径的“文件夹”时,可能会出现错误。因为它不是一个目录(我认为所有符号链接都指向文件夹)。
如何检查它是否指向一个目录?(我看手册、统计数据、目录..)
我以为所有符号链接都指向文件夹
没有。符号链接是对另一个路径的间接引用。该其他路径可以指可以在任何已安装的文件系统中表示的任何类型的文件,或者根本不指任何文件(即,它可以是断开的链接)。
如何检查它是否指向一个目录?
您提到了该stat()函数,但为了重新实现,ls您应该主要使用lstat(), 来代替。不同之处在于,当指定路径引用符号链接时,stat返回有关链接目标路径的信息,而lstat返回有关链接本身的信息(包括有关文件类型的信息,从中可以看出它是链接)。
如果遇到符号链接,您只需再次检查相同的路径即可stat()找出它指向的文件类型。 stat()将递归地解析符号链接以发现最终目标的信息,只有当符号链接损坏时,该目标才会成为符号链接。无论如何,您不需要出于特定目的区分损坏的链接和任何其他形式的非目录。