首页 > 解决方案 > 是否可以监视终端的特定输出?

问题描述

我正在使用 NodeJS 通过命令行运行 webbots,并将标准输出重定向到节点终端。我的问题是我想根据控制台日志触发事件。我尝试将命令的标准输出重定向到另一个文件,但这似乎不起作用。

这是控制台输出

INFO: sumo_example_two: Starting controller: python.exe -u sumo_example_two.py
INFO: sumo_supervisor: Starting controller: python.exe -u sumo_supervisor.py
robot2
INFO: sumo_example_one: Terminating.
INFO: sumo_example_two: Terminating.
INFO: sumo_supervisor: Terminating.
stdout:

我想提取'robot2'。

标签: node.jsterminalconsolestdoutwebots

解决方案


我刚刚测试过,以下代码段对我来说很好:

const { spawn } = require('child_process');
const ls = spawn('webots', ['--stdout']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);

  // Process `data` as you prefer, something like
  //
  //   if (data.includes('robot2')) {
  //     something()
  //   }
});


推荐阅读