有一个符号 link 的 dirent,我怎样才能得到 link-target 的路径名?
Having a dirent that is a symbolic link, how can I get the link-target's path name?
用 opendir()
打开一个目录并使用 readdir()
读出它的条目,我检查条目是否是符号 link 如果是的话我想使用目标的名称。
(假设我们有一个目录 exampledir
,其中有一个名为 linkfile
link 的符号 link 文件指向目录 /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...?
}
使用readlink/readlinkat(2)系统调用。
用 opendir()
打开一个目录并使用 readdir()
读出它的条目,我检查条目是否是符号 link 如果是的话我想使用目标的名称。
(假设我们有一个目录 exampledir
,其中有一个名为 linkfile
link 的符号 link 文件指向目录 /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...?
}
使用readlink/readlinkat(2)系统调用。