栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从内核模块中的文件描述符中获取文件名?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从内核模块中的文件描述符中获取文件名?

不要调用

SYS_readlink
-使用与
procfs
读取其中一个链接时相同的方法。开始与代码中
proc_pid_readlink()
proc_fd_link()
fs/proc/base.c

从广义上讲,给予

int fd
struct files_struct *files
从你感兴趣的(你已采取的引用)的任务,你想做的事:

char *tmp;char *pathname;struct file *file;struct path *path;spin_lock(&files->file_lock);file = fcheck_files(files, fd);if (!file) {    spin_unlock(&files->file_lock);    return -ENOENT;}path = &file->f_path;path_get(path);spin_unlock(&files->file_lock);tmp = (char *)__get_free_page(GFP_KERNEL);if (!tmp) {    path_put(path);    return -ENOMEM;}pathname = d_path(path, tmp, PAGE_SIZE);path_put(path);if (IS_ERR(pathname)) {    free_page((unsigned long)tmp);    return PTR_ERR(pathname);}free_page((unsigned long)tmp);

如果您的代码在进程上下文中运行(例如,通过syscall调用),并且文件描述符来自当前进程,则可以将其

current->files
用于当前任务
structfiles_struct *



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号