我的C ++库使用stdin
处理stdout
和std::cout
的{{1}}和stdin
,直到std::istream::peek()
为止
EOF
我正在构建启用了异常处理的系统:while (in.peek() != EOF) {
//...read line
}
我得到了一个我不理解的未处理异常。
emcc -s DISABLE_EXCEPTION_CATCHING=2 -s MODULARIZE=1 -s LEGACY_VM_SUPPORT=1 -s WASM=0 -O1 libfasttext.so -o libfasttext.js
我在没有特定的File-system API配置的情况下加载了模块:
Loaded Javascript Module OK
exception thrown: 5279128
阅读文档,我已经在let FastTextModule = require('./libfasttext.js');
let Module = null;
if (Module) {
return;
}
Module = {
noExitRuntime: true,
noInitialRun: true,
preInit: [],
preRun: [],
postRun: [function () {
console.log(`Loaded Javascript Module OK`);
}],
locateFile: "./",
arguments: ['predict-prob', '/root/ft_lang_model.bin', 'test.csv', '2']
};
Module['locateFile'] = function (path, prefix) {
return prefix + path;
}
FastTextModule(Module);
Module.callMain(['predict-prob', '/root/ft_lang_model.bin', 'test.csv', '2']);
中定义了stdin / stdout函数,如here所述
preRun
但是我得到一个 {
preRun: [ function() {
function stdin() {
if (i < res.length) {
var code = input.charCodeAt(i);
++i;
return code;
} else {
return null;
}
}
var stdoutBuffer = "";
function stdout(code) {
if (code === "\n".charCodeAt(0) && stdoutBuffer !== "") {
console.log(stdoutBuffer);
stdoutBufer = "";
} else {
stdoutBuffer += String.fromCharCode(code);
}
}
var stderrBuffer = "";
function stderr(code) {
if (code === "\n".charCodeAt(0) && stderrBuffer !== "") {
console.log(stderrBuffer);
stderrBuffer = "";
} else {
stderrBuffer += String.fromCharCode(code);
}
}
FS.init(stdin, stdout, stderr);
}]
}
。