我有一个简单的程序,例如以下内容:
#include <stdio.h>
int main()
{
char buf[100];
while (fgets(buf, sizeof(buf), stdin) != NULL) {
printf("You typed: %s", buf);
}
}
我已经使用 Emscripten 进行了编译:
emcc -o hello.html hello.cpp
这给了我一个相当基本的Emscripten生成的网页,其中包含一个用于程序输出的简单窗口。然而,
fgets()
调用会导致浏览器弹出窗口,可能来自prompt()
。我可以输入内容,结果最终会在输出窗口中显示。这不是一个理想的交互体验。我想要更传统的“控制台”界面,用户可以在终端窗口中交互式地输入以提供输入到交互式程序。
我怀疑解决方案可能类似于JQueryTerminal、Hyper或Xterm.js,但到目前为止我还不清楚如何将它们连接到Emscripten编译的程序。
如何为我的Emscripten代码提供“控制台”界面?
readSync
,在网站上运行时使用window.prompt
,因此worker无法解决问题。你可以将fgets发送到worker,但仍然需要阻止脚本的执行。为了在浏览器中拥有类似终端的外观和感觉,您需要在emscripted本身中具有异步fgets函数。也许尝试在GitHub的emscripten存储库中询问,也许他们有异步代码的解决方案。 - jcubic