我有以下一段C
代码要编译成WebAssembly
.
# include <stdio.h>
int main() {
FILE *f = fopen("file.txt", "w");
if (f == NULL)
{
printf("Error opening file!\n");
return 0;
}
/* print some text */
const char *text = "Write this to the file";
fprintf(f, "Some text: %s\n", text);
/* print integers and floats */
int i = 1;
float py = 3.1415927;
fprintf(f, "Integer: %d, float: %f\n", i, py);
char c = 'A';
fprintf(f, "A character: %c\n", c);
fclose(f);
return 0;
}
所以我使用下面的命令来生成一个wasm
文件和对应的js
文件:
emcc write.c -s WASM=1 -o write.html
但是,当我尝试使用 JS 引擎(如v8
)来执行这段代码时,我根本找不到生成的输出。我也没有收到任何错误:
➜ test_code ~/v8/v8/out/x64.release/d8 write.js
➜ test_code
所以根据我的理解,wasm
代码需要利用JS
一些与系统相关的功能,比如 I/O 相关的操作符。也许不允许在这个浏览器环境中“操纵”文件系统?因为通常浏览器内部发生的事情应该留在浏览器中。
所以我写信询问将文件 I/O 相关的 C 程序迁移到WebAssembly
环境中的最佳实践。任何评论将不胜感激。谢谢。