gpt4 book ai didi

c - 有没有一种编程方法可以判断符号链接(symbolic link)是否指向 C 中的文件或目录?

转载 作者:行者123 更新时间:2023-12-02 01:32:15 25 4
gpt4 key购买 nike

我正在使用 readdir 递归地迭代目录。

struct dirent 已记录 here ,并指出 d_type 可以具有不同的值,包括 DT_LNKDT_DIRDT_REG。但是,当 d_typeDT_LNK 时,不会提示链接是指向文件还是目录。

有没有办法检查符号链接(symbolic link)的目标是文件还是目录?

最佳答案

dirent 结构可能会告诉您该条目是目录还是符号链接(symbolic link),但某些文件系统在 d_type 中不提供此信息,并将其设置为 DT_UNKNOWN

无论如何,判断符号链接(symbolic link)是否指向目录的最简单方法是通过 stat 系统调用来解析符号链接(symbolic link),如果成功,将填充stat 结构,允许 S_ISDIR 为您提供信息:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int is_directory(const char *path) {
struct stat st;
return !stat(path, &st) && S_ISDIR(st.st_mode);
}

请注意以下注意事项:

  • 您必须根据目录名称和条目名称构造路径以传递给 is_directory()
  • 对通过符号链接(symbolic link)链接的目录进行递归可能会导致无限递归,因为符号链接(symbolic link)可能指向父目录或其所在目录本身。

关于c - 有没有一种编程方法可以判断符号链接(symbolic link)是否指向 C 中的文件或目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73000247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com