作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有文件描述符并且想获得真实路径。目前我调用 sys_readlink /proc/self/fd/<fd>
有时有效,但我经常收到错误 -14 (-EFAULT)。
这里是一些代码:
fs = get_fs();
set_fs(KERNEL_DS);
err = sys_readlink(path, buf, size-1);
set_fs(fs);
是否有其他(可能更好)的方法从内核获取真实路径?
最佳答案
从任务结构中的 filep 中获取它,例如像
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);
为简洁起见省略了错误处理。
关于c - sys_readlink 失败 EFAULT - 备选方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216871/
我有文件描述符并且想获得真实路径。目前我调用 sys_readlink /proc/self/fd/有时有效,但我经常收到错误 -14 (-EFAULT)。 这里是一些代码: fs = get_fs(
我是一名优秀的程序员,十分优秀!