具有作为符号链接的Dirent,如何获得链接目标的路径名?

时间:2018-11-02 13:56:48

标签: c symlink readdir opendir

已经使用opendir()打开了一个目录,并使用readdir()读出了它的条目,然后检查该条目是否是符号链接,如果是,我想使用目标的名称。

(假设我们有一个目录exampledir,其中有一个名为linkfile的符号链接,链接到目录/path/to/link/target

这是一个简化的代码段:

#include <sys/types.h> 
#include <dirent.h>
// ...
const char *path_to_dir = "./exampledir"; 
DIR *dir = opendir(path_to_dir); 
dirent *entry = readdir(dir); 
if (entry->d_type == DT_LNK) {
  // find out the link target's name and store / use it, 
  // but how...? 
}

1 个答案:

答案 0 :(得分:2)

使用readlink/readlinkat(2)系统调用。