Jav*_*ano 6 c programming-languages fuse
我正在开发一个FUSE应用程序,它带有一个带mp3的目录,并在另一个目录中安装一个具有以下结构的文件系统(根据它们的标签):
Artist1
|
-----> Album11
|
-----> Track01
-----> Track02
-----> Track03
-----> Track04
-----> Track05
-----> Album12
....
Artist2
|
-----> Album21
-----> Album22
....
Artist3
.....
Run Code Online (Sandbox Code Playgroud)
我正在使用sqlite3数据库来保存真实文件的链接.艺术家和专辑元素是文件夹,轨道元素是真实元素的链接.
我已经实现了为艺术家和专辑创建文件夹.但现在我有一个问题.
我有这个:
static int getattr(...) {
....
else if ( level == 0 || level == 1 || level == 2 )
{
// Estamos en el primer nivel. Son artistas, y por lo tanto, carpetas.
stbuf->st_mode = S_IFDIR | 0755;
stbuf->st_nlink = 2;
lstat(path, stbuf);
}
else if (level == 3) {
// Estamos en el tercer nivel. Son canciones, por lo que son enlaces
stbuf->st_mode = S_IFLNK | 0755;
stbuf->st_nlink = 2;
lstat(path, stbuf);
}
.....
}
Run Code Online (Sandbox Code Playgroud)
现在,当我进入track目录时,会收到一条消息,告诉我该函数未实现(链接函数).我必须实现哪些功能才能知道链接指向的位置?或者我在哪里填写指针的方向?
谢谢!
这似乎对我有用:
添加一个int my_readlink(const char *path, char *buf, size_t size)函数,您的struct fuse_operations成员.readlink应该指向该函数。对于符号链接路径,您的函数应使用buf以零结尾的字符串填充缓冲区,该字符串是链接目标的路径。不要写入超过size字节。例如做类似的事情:
strncpy(buf, "/target/path", size);
Run Code Online (Sandbox Code Playgroud)在您的my_getattr()函数(应指向哪个struct fuse_operations成员)中,对于符号链接路径,在第二个参数 ( ) 中设置:.getattrstruct stat * stbuf
stbuf->st_mod到S_IFLNK | 0777stbuf->st_nlink到1stbuf->st_size目标路径的长度(长度中不包括字符串的零终止符)