创建一个允许装载目录的程序
Creating a program that allows mounting a directory
我想用C++创建一个程序,允许客户端基本上装载服务器的目录,然后使用该目录及其包含的文件,就好像它们存储在本地一样。
服务器将在linux上运行,但客户端可以是linux或windows。尽管我不介意一开始就把它变成linux,但只要可以添加支持windows客户端的功能,而不需要重写大量代码。
我该如何去创造这样的东西?在过去的几周里,我学到了很多关于套接字的知识,我认为它起到了一定的作用,但我还没有找到如何允许装载一个目录,然后在该目录中的文件发生问题时执行某些操作。
例如,当用户保存文件时,服务器除了保存文件外,还应该能够在另一个目录中创建所述文件的带时间戳的备份。
我该从哪里开始学习如何做到这一点?
在Linux下,现代桌面环境已经包含了这种功能。使用装载和融合,您还可以装载目前可用的大多数网络文件系统。
如果你决定继续这样做,我想你需要在什么级别上选择抽象。桌面环境抽象是否足够,比如在KDE中创建kioslave,这将限制您作为用户使用KDE应用程序。或者,如果您选择FUSE模块,它将在文件系统级别上工作,并适用于所有应用程序,当然,这些应用程序缺乏kioslaves的UI集成。
在Windows下,我认为你唯一的方法是使用提供的虚拟文件系统api,我可以发誓我最近读过类似的东西,但我找不到。我相信也可以进行资源管理器集成,但我不确定。
如果我在写这样的程序,我会使用Qt库,因为我喜欢它们,而且它们在多个平台上都能很好地工作。C++纯粹主义者经常因为各种原因不喜欢它们(比如它们一般的"javaish"性质),所以您可能想研究boost提供的文件系统实用程序。
Qt中的QFileSystemWatcher类可以通知您对文件和目录的更改。
当然,您需要一个套接字连接,并决定在来回发送消息时使用什么协议。通常,最好使用一个通用协议(例如JSON或Google的协议缓冲区),这样就可以轻松地开发其他工具。
我在评论中提到了git,因为提供版本控制功能的程序通常会在后台使用现有的工具,所以您的程序只需调用git
即可获得强大的版本控制功能。
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 程序崩溃并显示"std::out_of_range"错误
- 在C应用程序中运行C++(带有STL)函数
- 允许在应用程序级别上装载的文件系统库
- 创建一个允许装载目录的程序