首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sys_readlink失败-备用

sys_readlink失败-备用
EN

Stack Overflow用户
提问于 2011-11-22 02:46:21
回答 2查看 638关注 0票数 2

我有filedescriptor,我想得到真正的路径。目前我调用sys_readlink /proc/self/fd/<fd>,它有时会起作用,但我经常得到一个错误-14 (-EFAULT)。

下面是一些代码:

代码语言:javascript
复制
fs = get_fs();
set_fs(KERNEL_DS);
err = sys_readlink(path, buf, size-1);
set_fs(fs);

有没有其他(可能更好的)方法从内核获取realpath?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-22 07:58:59

从任务结构中的filep中获取它,例如

代码语言:javascript
复制
struct task_struct *task;
struct files_struct *files;
struct file *file;
char buf[buflen], *realpath;

task = current /* or some other task */;
get_task_struct(task);
files = get_files_struct(task);
put_task_struct(task);
spin_lock(&files->file_lock);
file = fcheck_files(files, fdno);
realpath = d_path(file->f_path, buf, buflen);
spin_unlock(&files->file_lock);
put_files_struct(files);

为简洁起见,省略了错误处理。

票数 4
EN

Stack Overflow用户

发布于 2011-11-22 02:51:48

-EFAULT表示"buf“指针有问题。你是先分配内存的吗?

编辑:看起来你是在内核模式下编程。事实证明“真实的”路径在内核模式下是没有意义的。

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

https://stackoverflow.com/questions/8216871

复制
相关文章

相似问题

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