首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C/C++中的简单虚拟文件系统

C/C++中的简单虚拟文件系统
EN

Stack Overflow用户
提问于 2009-09-01 09:50:20
回答 6查看 27.4K关注 0票数 9

我想实现一个非常简单的虚拟文件系统( VFS ),它支持一些基本的文件系统操作,如fwrite、fopen、fput等。VFS是一些具体操作系统(如Windows、Linux等)之上的抽象层。

代码语言:javascript
运行
复制
FILE VFS_File_Open( const unsigned char* strFile, int flags );

现在,我想知道如何在这个接口的实际实现中区分与之交谈的文件系统。在C中是否有告诉我应用程序在哪个操作系统上运行的东西,以便我可以这样做:

代码语言:javascript
运行
复制
FILE VFS_File_Open( const unsigned char strFile, int flags )
{
int OS = getOSID();

if (0S == 1)
  //implement here the system calls required to open a file on a WIN OS
else if (OS == 2)
  //implement here the system calls required to open a file on a Linux OS
etc  
}

编辑:

现在,我想知道是否有人知道在哪里可以找到用于Windows的文件操作的系统调用?很容易在Linux上找到它们,但是我很难在windows中找到类似的东西,例如,我会对系统调用来打开文件、编写文件等感兴趣。

另一个注意事项:Cstdio.h提供了一些站立IO操作,如

代码语言:javascript
运行
复制
FILE * fopen (const char *filename, const char *opentype)

换句话说,我不必在我的VFS中重新实现fopen例程,因为Gnu C库关心它处理的是什么操作系统,对吗?我只需要实现stdio库不支持的功能,例如创建目录,这些目录因文件系统而异吗?

谢谢

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1361560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档