wong2 Oct 21Emscripten的文件系统
Intro我们知道Emscripten可以将C/C++代码编译到WebAssembly,从而在浏览器中运行。为了实现这个目标,除了代码层面的编译外,Emscripten还需要在Web环境下提供大量对native runtime的模拟,如文件系统、底层图形库、网络等。今天重点看一下文件系统部分。Overview由于浏览器中的JavaScript无法直接访问操作系统的文件系统,Emscripten提供了一套虚拟文件系统来模拟一个POSIX FS。FileSystemArchitecture如上面的架构图所示,原生代码编写的应用使用libc/libxx中API进行文件系统操作,经Emscripten编译后,调用JavaScript编写的虚拟文件系统API。 默认的虚拟文件系统实现为MEMFS,顾名思义它是在内存里实现的,页面刷新后数据就会丢失。如果需要持久化,在浏览器里可以使用基于IndexedDB的IDBFS。使用示例下面我们通过一个例子来展示文件系统的使用,并为后续实验提供一个基础。C程序首先我们编写一个如下含有文件操作的C程序:#include <stdio.h> vo...