我有一个C程序,它通过命令行接受一个参数(一个char数组/字符串),并从stdin读取.我使用emscripten将其编译为JavaScript.这是成功的,我可以像使用node.js的普通C程序一样运行它:
emcc -O2 translate.c
node translate.js "foo" < bar.txt
Run Code Online (Sandbox Code Playgroud)
如您所见,我提供字符串"foo"作为参数,bar.txt的内容为stdin.现在我希望这是一个自包含的HTML文件.
通过将输出更改为HTML:
emcc -O2 translate.c -o trans.html
Run Code Online (Sandbox Code Playgroud)
我通过添加arguments: ['foo'],到中的定义来提供参数var Module.这按预期工作,程序正确接收参数.
现在,我如何为此程序提供stdin输入?我不需要动态地这样做.只需在HTML中的某个地方声明一个包含所需stdin内容的字符串即可.
刚刚找到了适合我的解决方案.在生成HTML的JS文件中,prompt()当没有定义其他输入方法时,有一个默认的输入处理程序是用户.只需编辑变量result或调用您自己的函数:
} else if (typeof window != 'undefined' &&
typeof window.prompt == 'function') {
// Browser.
// REPLACE THIS CODE:
result = window.prompt('Input: '); // returns null on cancel
if (result !== null) {
result += '\n';
}
Run Code Online (Sandbox Code Playgroud)