【发布时间】:2020-05-29 15:05:33
【问题描述】:
我正在运行一个使用 emscripten 编译为 wasm 的 C 工具。该工具适用于非常大的文件。在 CLI 上正常运行此工具时,操作通常会流式传输结果并在返回足够的数据后提前终止程序。例如,您可能会运行:
./tool <input-file> | head -n 100
该工具将在检测到 stdout 已被head 关闭后终止,实际上只读取一小部分输入。
问题在于带有 emscripten 的 stdout 似乎是异步的(通过覆盖 Module.print),因此该工具每次都运行完成。有没有办法让它在标准输出上阻塞,所以我只能读取我需要的内容然后终止该工具?
【问题讨论】:
-
问题是带有 emscripten 的标准输出似乎是异步的 数据必须在某个地方。可能只是一个大缓冲区。你在什么操作系统上运行?如果您使用的是 Linux,您可以尝试使用 the
stdbufutility,如以下答案:stackoverflow.com/a/25548995/4756299 -
对不起,如果我不是很清楚。这不是缓冲问题。恰恰相反。我有太多数据出来了,我希望能够告诉 WebAssembly 进程阻塞,直到我处理完已经收到的数据。
标签: javascript c webassembly emscripten