在我的所有FUSE操作中,我在开始时都在做这样的事情:
ctx_t* ctx = (ctx_t*)(fuse_get_context()->private_data);
这有点令人厌倦,所以我把它培养成它自己的函数,其中指针是静态定义的。这是一个坏主意吗?我可以保证指针是静态的,所以这不会导致内存错误吗?
static ctx_t* get_ctx(void) {
static ctx_t* ctx = NULL;
if (ctx == NULL) {
ctx = (ctx_t*)(fuse_get_context()->private_data);
}
return ctx;
}
答案 0 :(得分:0)
您应该在头文件中包含这一行:
ctx = (ctx_t*)(fuse_get_context()->private_data);
然后您只需要调用一次 fuse_get_context,即在您的 init 函数中以 ctx
作为您的返回值。 init 函数的返回值将在 fuse_context 的 private_data 字段中传递给所有文件操作,并作为 destroy() 方法的参数。然后,您可以在调用 fuse_main_function 时将 ctx
作为参数之一传递。