Как очистить вывод по каналу из stdout в Nodejs при обращении к файлу - PullRequest
0 голосов
/ 20 ноября 2018

Простой пример:

 node  someCode.js|grep "someString"  

Отображение someString в том виде, как оно записано.

Сейчас

  node someCode.js|grep "someString"  > /tmp/someFile &

В другом окне:

ls -l /tmp/someFile 

показывает 0 байт ... поэтому я не могу увидеть его содержимое.Я знаю, что process.stdout.write - это поток, который сбрасывается сразу после записи ...

Что мне нужно сделать, чтобы выходной файл обновлялся с содержимым по мере его записи?Существуют сложные способы, такие как запись в сокеты UNIX и создание пользовательской кошачьей программы на основе сокетов UNIX, но это слишком сложно для этого простого требования.

1 Ответ

0 голосов
/ 20 ноября 2018

Я понял, что это больше Linux, чем вопрос Node.js.Ответ здесь .Это не принятый ответ, но один с максимальным количеством голосов.Моя команда выглядит следующим образом:

    node someCode.js|stdbuf -oL grep "someString"  > /tmp/someFile &

Теперь можно отслеживать прогресс в / tmp / someFile по мере записи строк.С опцией L строки записываются как L без буферизации.Я попытаюсь отредактировать вопрос, чтобы добавить Linux в качестве другого тега.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...