我在试着让某种毅力和应征码一起工作.
我要做的(作为概念的证明)是,每次点击页面时,时间都会添加到文件的末尾
目前它似乎每次运行时都会重新创建该文件.
以下是相关的代码
EM_ASM(
FS.mkdir('/IDBFS');
FS.mount(IDBFS, {}, '/IDBFS');
FS.syncfs(true, function (err) {
assert(!err);
}); // sync FROM backing store
);
int c;
FILE *file;
file = fopen("/IDBFS/test.txt", "a");
if (file) {
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
fprintf ( file, "time:%s\n", asctime (timeinfo) );
fclose(file);
EM_ASM(
FS.syncfs(function (err) { // sync TO backing store
assert(!err);
});
);
file = fopen("/IDBFS/test.txt", "r");
while ((c = getc(file)) != EOF)
printf("%c",c);
fclose(file);
}发布于 2014-04-30 18:55:21
这里的问题似乎是syncfs是一个异步操作,但是您把它当作是同步的。
您必须等到syncfs的回调被触发(从备份存储同步时)才能打开和读取您的文件。
作为一个例子,请参见:sync.c
它使用ccall()在回调完成后调用C函数。另外,请注意使用emscripten_exit_with_live_runtime来保持程序运行,即使main已经返回。
https://stackoverflow.com/questions/23376234
复制相似问题