Я использую инструмент C, скомпилированный для wasm с использованием emscripten. Инструмент работает с очень большими файлами. При нормальном запуске этого инструмента в интерфейсе командной строки часто выполняются операции потоковой передачи результатов и преждевременного завершения программы, как только возвращается достаточно данных. Например, вы можете выполнить:
./tool <input-file> | head -n 100
Инструмент завершит работу после того, как обнаружит, что стандартный вывод был закрыт head
, фактически считывая только небольшую часть ввода.
Проблема в том, что стандартный вывод с emscripten выглядит асинхронным (путем переопределения Module.print), поэтому инструмент каждый раз запускается до завершения. Есть ли способ заблокировать его на стандартном выводе, чтобы я мог читать только столько, сколько мне нужно, а затем завершить работу инструмента?