node.js - 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());
});
但结果只是挂起,我做错了什么吗?在此先感谢您的帮助!
解决方案
由于您不从stderr
管道中读取并且不要忽略stdio
使用选项,因此该过程会挂起,因为管道在读取之前仍处于打开状态。
一个类似但不相关的问题是为什么我通过 spawn() 创建的 Node 子进程挂起?.
推荐阅读
- php - PhpStorm 2018 - 如何检查整个项目与 php 7.2 的兼容性?
- java - 无法在 JTextArea 中显示特定(西里尔等)字符
- java - 启动两个不同的配置文件 Maven
- html - 使用顺风使右列(div)可滚动
- c - make 给了我一个我不理解 TurboC 的错误
- c - 通过将数字分隔成数组然后合并来交换数字顺序
- sqlplus - 如何在服务器上添加数据库以供服务器上的所有计算机访问
- javascript - 当我嵌入链接时从我的 Chrome 扩展程序接收损坏的链接
- angular - 为什么材料表排序和分页不起作用?
- facebook - 使用 facebook graph API 的无效参数错误