首页 > 解决方案 > Node.js:进程生成挂起

问题描述

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

netstat -nat | grep 3000

最终

netstat -nat | grep 3000 | grep ESTABLISHED

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

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());
});

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

标签: node.jsshellprocessstdoutspawn

解决方案


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

一个类似但不相关的问题是为什么我通过 spawn() 创建的 Node 子进程挂起?.


推荐阅读