作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行一个使用 emscripten 编译为 wasm 的 C 工具。该工具适用于非常大的文件。在 CLI 上正常运行此工具时,操作通常会流式传输结果并在返回足够的数据后提前终止程序。例如,您可能会运行:./tool <input-file> | head -n 100
该工具将在检测到标准输出已被 head
关闭后终止。 ,实际上只读取输入的一小部分。
问题是带有 emscripten 的 stdout 似乎是异步的(通过覆盖 Module.print),因此该工具每次都运行完成。有没有办法让它在标准输出上阻塞,所以我只能读取我需要的内容,然后终止该工具?
最佳答案
您可以将输出重定向到文件,然后将任务置于后台。同时监控日志文件。当它达到 100 行时,杀死子 pid。
像这样的一些应该有效:
rm -f /tmp/log
touch /tmp/log
./tool input_file > /tmp/log 2>&1 &
pid=$!
while sleep 1
do
ret=`cat /tmp/log | wc -l`
if [ "$ret" -ge 100 ]
then
kill $pid
exit 0
fi
done
关于javascript - Emscripten - 有没有办法限制写入标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60215750/
我是一名优秀的程序员,十分优秀!