首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux :获取符号链接后面的真实路径

Linux :获取符号链接后面的真实路径
EN

Stack Overflow用户
提问于 2015-01-29 17:43:03
回答 2查看 1.3K关注 0票数 4

我正在处理一些linux内核内容,我有一个名为/dev/blah/任何指向/dev/block/real_device的假路径

问题是,lookup_bdev将无法遵循符号链接,所以我想通过获取真正的路径(/dev/block/ real )来提前调整路径,这样我就可以将它传递给lookup_bdev,这样它就可以成功地返回,而不是一个错误。

或任何其他内核调用,这些调用将正确检索给定初始路径的block_device信息。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-29 20:47:21

为此使用VFS层(特别是dcache/nameidata)。

代码语言:javascript
复制
#include <linux/namei.h>
#include <linux/dcache.h>

...

struct path path;
char buf[256];
char* ptr;
int err = kern_path("/dev/disk/by-id/dm-name-lkdevel-root", 
                    LOOKUP_FOLLOW, &path);

if(!err) {
    ptr = d_path(&path, buf, 256);        

    if(!IS_ERR(ptr)) {
        /* ptr contains real path */
    }
}

这在普通Linux 3.12上进行了测试。

注意,d_path()可能会返回特殊文件系统的奇怪结果,并将(deleted)后缀添加到已删除的文件中。

票数 4
EN

Stack Overflow用户

发布于 2015-01-30 17:19:41

尝试使用sys_readlink()系统调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28221166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档