我想实现一个非常简单的虚拟文件系统(VFS),它支持一些基本的文件系统操作,如fwrite,
fopen,fput等.VFS是一些具体操作系统之上的抽象层,例如Windows,Linux等.现在假设,那
fopen界面看起来像这样
FILE VFS_File_Open( const unsigned char* strFile, int flags );
现在我想知道我如何能够在这个界面的实际实现中区分哪个
我正在谈论的文件系统.是否有C语言告诉我应用程序运行在哪个操作系统上
我可以这样做:
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的东西,例如我会对打开文件,写文件等的系统调用感兴趣.
另一方面:C stdio.h提供了许多支持IO操作,如
FILE * fopen (const char *filename, const char *opentype)
换句话说,我不必在我的VFS中重新实现fopen例程,因为Gnu C库负责处理它正在处理的操作系统,是吗?我只需要实现stdio库不支持的功能,例如创建目录,从文件系统到文件系统不同?
谢谢