Node.js:Process Spawn Hang

时间:2018-10-17 18:37:50

标签: node.js shell process stdout spawn

我正在尝试运行以下shell命令:

netstat -nat | grep 3000

最终

netstat -nat | grep 3000 | grep ESTABLISHED

根据以下可见的https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options,使用spawn从Node.js获取连接到特定端口的IP地址:

const netStat = spawn('netstat', ['-nat']);
const grep = spawn('grep', ['3000']);

netStat.stdout.on('data', (data) => {
  grep.stdin.write(data);
});

console.log('Determining public ip\'s connected to port 3000');
grep.stdout.on('data', function(data){
  console.log(data.toString());
});

但是结果只是挂起,我做错什么了吗? 预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

由于您没有使用这些选项从stderr管道中读取并且也不会忽略stdio,因此该过程将挂起,因为管道在读取之前仍处于打开状态。

一个类似但不相关的问题是Why is my Node child process that I created via spawn() hanging?