c - 读取内核空间中的符号链接(symbolic link)

标签 c linux-kernel symlink

我正在编写 LKM,需要找出特定符号链接(symbolic link)指向的位置。基本上,我需要系统调用 readlinkat(或 readlink)的功能,但在内核空间中。有没有简单的方法可以做到这一点?

直接使用 readlinkat 对我不起作用,我总是得到 EFAULT(我想这是因为我的缓冲区显然位于内核内存空间而不是用户空间)。

最佳答案

首先,您不能直接在内核模块中使用用户空间系统调用(readlinkat()readlink())。相反,您需要在内核空间中使用导出的函数/符号。

接下来,可能要查看 struct inode_operations特定于您正在使用的文件系统。另请查看 generic_readlink()在内部调用 vfs_readlink()

关于c - 读取内核空间中的符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830150/

相关文章:

c - OpenSSL rsa 例程 :RSA_padding_check_PKCS1_type_2:pkcs decoding error

c - 如何在printk中使用变量作为格式字符串?

cmake - 如何使用 cpack 打包符号链接(symbolic link)?

windows - 批处理文件 (windows cmd.exe) 测试目录是否为链接 (symlink)

通过网络复制符号链接(symbolic link)

c - MPI 结构错误

c - 使用自行设计的 C 编译器构建代码

c++ - c/c++ 自然语言处理库

c - 内核3.3.8中process_backlog和softnet_data字段的理解

linux - linux fork不安全吗