Tag: fuse

在项目中使用libfuse,没有root访问权限(用于安装)? FTP安装和inotify / kqueue / FSEvents

我希望我的应用程序能够显示远程FTP(或SFTP等)位置的目录列表。 当远程目录树中的文件/目录发生更改时,应用程序应使用相关更改更新其视图。 因为遍历整个树是缓慢而浪费的,所以我想使用FSEvents(Linux上的inotify / kqueues)的内容,但显然这些库是基于文件系统的,并且与FTP服务器的连接不一样作为挂载的文件系统。 为了使这些库工作,我需要在本地机器上实际安装由FTP / SFTP支持的文件系统,然后将FSEventStream(或kqueue等)附加到此本地安装。 我知道FUSE可以做到这一点,但有没有办法我可以使用FUSE而无需用户首先安装它? 我的意思是,我可以将它与我的(Mac)应用程序捆绑在一起并创建挂载,而无需让用户完成实际运行安装程序包的过程,将libfuse和内核模块复制到系统中吗? 是否假设/dev/fuse存在,或者它是否可以存在于我的应用程序目录中的/dev/ path之外? Nice Mac应用程序只需拖放就可以安装,如果可能的话我想保留这种方式。 我不清楚是否可以直接使用libfuse(如果文件包含在应用程序中),而不是在系统路径中安装它。 或者,是否有人有任何其他建议来监控FTP上的更改,而不进行轮询?

可以运行多个主循环?

我正在使用libfuse和glib事件接口,我遇到了一个需要同时运行多个主循环的问题(glib的g_main_loop_run和fuse_loop_mt )。 我已经尝试在辅助上下文下为glib的事件循环创建一个分离的线程,例如: static void * event_loop(void *arg) { GMainLoop *event_loop; GMainContext *context; context = g_main_context_new(); g_main_context_push_thread_default(context); event_loop = g_main_loop_new(context, FALSE); g_main_loop_run(event_loop); return NULL; } … pthread_t event_thread; pthread_attr_t thread_attr; pthread_attr_init(&thread_attr); pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED); event_thread = pthread_create(&event_thread, &thread_attr, event_loop, NULL); 但是,glib事件循环不会接收任何触发的事件。 我在这里完全偏离基地吗? 解决多个主循环的正确方法是什么?