Tag: symlink

读取内核空间中的符号链接

我正在写一个LKM,需要找出特定符号链接指向的位置。 基本上我需要syscall readlinkat (或readlink )的function,但在内核空间。 是否有捷径可寻? 直接使用readlinkat对我来说不起作用,我总是得到EFAULT(我想这是因为我的缓冲区显然是在内核内存空间而不是用户空间)。

如何确定使用stat()文件是否是符号链接?

我基本上必须为一个类编写一个UNIX ls命令的克隆,而且几乎所有东西都在工作。 我似乎无法弄清楚如何做的一件事是检查文件是否是符号链接。 从stat()的手册页中,我看到定义了一个mode_t值, S_IFLNK 。 这就是我试图检查一个文件是否是一个sym-link,没有运气(注意,stbuf是stat()返回inode数据的缓冲区): switch(stbuf.st_mode & S_IFMT){ case S_IFLNK: printf(“this is a link\n”); break; case S_IFREG: printf(“this is not a link\n”); break; } 我的代码ALWAYS打印this is not a link即使它是,并且我知道一个事实,所述文件是一个符号链接,因为实际的ls命令这样说,再加上我创建了sym-link … 谁能发现我可能做错了什么? 谢谢您的帮助!