首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用node.js读取应用程序标准输出数据

使用node.js读取应用程序标准输出数据
EN

Stack Overflow用户
提问于 2013-07-03 19:44:50
回答 1查看 588关注 0票数 0

让我们以"top“应用程序为例,它显示系统信息并定期更新。

我想使用node.js运行它,并显示该信息(以及更新!)。我想出的代码如下:

代码语言:javascript
运行
AI代码解释
复制
#!/usr/bin/env node

var spawn = require('child_process').spawn;

var top = spawn('top', []);

top.stdout.on('readable', function () {
    console.log("readable");
    console.log('stdout: '+top.stdout.read());
});

它的行为和我预期的不一样。事实上,它不会产生任何结果:

代码语言:javascript
运行
AI代码解释
复制
readable
stdout: null
readable
stdout:
readable
stdout: null

然后退出(这也是出乎意料的)。

以top应用程序为例。目标是通过节点代理这些更新,并将它们显示在屏幕上(因此与直接从命令行运行top的方式相同)。

我最初的目标是编写使用scp发送文件的脚本。这样做,然后注意到我遗漏了scp本身显示的进度信息。看了看scp节点模块,他们也没有代理它。所以回溯到像top这样的常见应用程序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-03 20:06:05

top是一个交互式控制台程序,设计用于在实时伪终端上运行。

至于您的stdout读取,top发现它的stdin不是tty,并以错误退出,因此在stdout上没有输出。您可以在shell中看到这种情况,如果您执行echo | top,它将退出,因为标准输入将不是tty。

即使它实际正在运行,它的输出数据也将包含用于操作固定维度控制台的控制字符。(如“将光标移动到第2行的开头”)。它是一个交互式用户界面,作为编程数据源是一个糟糕的选择。“屏幕抓取”和解释这些数据并提取有意义的信息将是相当困难和脆弱的。您是否考虑过一种更干净的方法,比如从/proc/meminfo文件和内核为此公开的其他特殊文件中获取所需的数据?最终,top将从现成的特殊文件和系统调用中获取所有这些数据,因此您应该能够利用便于编程访问的数据源,而不是试图筛选顶部。

当然,现在top有分析代码来做平均值等等,你可能必须重新实现,所以屏幕抓取和查看干净的数据源都有优缺点,也有容易和困难的方面。但我的0.02美元将专注于良好的数据源,而不是试图屏幕抓取控制台UI。

要考虑的其他选项/资源:

诸如free -m

  • vmstat

  • the expect program之类的终端命令旨在帮助自动化需要终端

的控制台程序

为了清楚起见,确实可以将top作为子进程运行,欺骗它认为有tty和所有相关的环境设置,并获取它正在写入的数据。它非常复杂,类似于试图通过在电视屏幕上拍摄天气频道的照片并在其上运行光学字符识别来获取天气。风格,但还有更简单的方法。如果您需要研究更多关于诱使控制台程序作为子进程运行的信息,请查看expect命令。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17456820

复制
相关文章
iOS:关于WWDC2020-Objective-C运行时的改进
在 WWDC2020 中 Objective-C 运行时的改进这个视频提到关于类的的数据结构的一些变化,本文是对这个视频提到的部分变化进行翻译。
CC老师
2022/01/14
5100
iOS:关于WWDC2020-Objective-C运行时的改进
Project Euler Problem 1
用python解决  Project Euler 问题 记录 由于比较擅长java  对python相对陌生,就用python来解答 源码: sumAll =0 for index in range(1,1000): if index%3==0 or index%5 ==0: sumAll += index print(sumAll)
明明如月学长
2021/08/27
2810
HDUOJ-----2824The Euler function
The Euler function Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3284    Accepted Submission(s): 1350 Problem Description The Euler function phi is an important kind of function in number theory
Gxjun
2018/03/22
6300
Adams-Bashforth-Euler格式的稳定域。
Adams_Bashforth_2.m figure(1), clf, hold on % Plot of stability domain theta = 0:0.01:1; theta = theta*pi; z = exp(2*i*theta) - exp(i*theta); z = z./(1.5*exp(i*theta) - 0.5); plot(z) % Plot of oval b = 0.5^0.25; a = 0.5; z = - a*(1-cos(theta))
裴来凡
2022/05/28
3870
Adams-Bashforth-Euler格式的稳定域。
YOLO V2的10个改进技巧(上篇)
YOLO V2的原始论文是,《YOLO9000: Better, Faster, Stronger 》,新的YOLO版本论文全名叫“YOLO9000: Better, Faster, Stronger”,主要有两个大方面的改进:
小草AI
2019/05/30
2.6K0
数学——Euler方法求解微分方程详解
用Euler算法求解初值问题 \[ \frac{dy}{dx}=y+\frac{2x}{y^2}\] 初始条件\(y(0)=1\),自变量的取值范围\(x \in [0, 2]\)
py3study
2020/01/22
2.4K0
CVPR 2020 | 10篇改进GAN的论文(网络、训练、正则等)
引入新的局部稀疏注意力层,保留二维几何形状和局部性,用这种结构替换SAGAN的密集注意力层即可获得显着的FID、Inception score和视觉效果。https://github.com/giannisdaras/ylg
公众号机器学习与AI生成创作
2020/06/19
1.3K0
CVPR 2020 | 10篇改进GAN的论文(网络、训练、正则等)
CVPR 2020 | 10篇改进GAN的论文(网络、训练、正则等)
引入新的局部稀疏注意力层,保留二维几何形状和局部性,用这种结构替换SAGAN的密集注意力层即可获得显着的FID、Inception score和视觉效果。https://github.com/giannisdaras/ylg
OpenCV学堂
2020/06/19
1.1K0
CVPR 2020 | 10篇改进GAN的论文(网络、训练、正则等)
一维Euler方程的AUSM(Liou-Steffen)格式等。
AUSM_scheme.m clear all global PRL CRL MACHLEFT gamma pleft pright rholeft rhoright uleft... uright tend lambda % lambda = dt/dx % .....................Input............................ gamma = 1.4; % Ratio of specific heats J = 48;
裴来凡
2022/05/28
2220
一维Euler方程的AUSM(Liou-Steffen)格式等。
iOS16 和 Xcode14 如何改进 App 大小和运行时性能
本文主要介绍苹果在 Xcode14 和 iOS 16 上,如何从编译层面和运行时层面,优化 Swift 和 Objective-C runtime, 来让 app 二进制体积更小,运行更快,启动更快。当你使用 Xcode 14 构建应用程序时,你将会了解到如何访问高效的协议检查,更小消耗的消息发送调用,以及优化后的 ARC。下面我们深入探讨这几个方面的优化。
DerekYuYi
2022/06/26
4K1
iOS16 和 Xcode14 如何改进 App 大小和运行时性能
数学--数论--HDU - 6124 Euler theorem (打表找规律)
HazelFan is given two positive integers a,b, and he wants to calculate amodb. But now he forgets the value of b and only remember the value of a, please tell him the number of different possible results. Input The first line contains a positive integer T(1≤T≤5), denoting the number of test cases. For each test case: A single line contains a positive integer a(1≤a≤109). Output For each test case: A single line contains a nonnegative integer, denoting the answer. Sample Input 2 1 3 Sample Output 2 3 这个题比较水,用了map还是不如线性递推快,但是线性递推就超时了,于是打表找规律,然后发现规律如下。
风骨散人Chiam
2020/11/05
2920
五分钟了解Java10针对垃圾收集的改进
Java10 已经发布了大概有一个多月了。我们在之前的文中介绍过10为我们带来的一些新特性:JDK10要来了:下一代 Java 有哪些新特性?。其中就提到了10 关于G1垃圾收集器的一些改进。G1在Java 9的时候已经是被作为默认的垃圾收集器了。如果你了解G1的话,应该知道它是一个更注重低停顿的收集器。有关G1的内容你可以移步一步步图解G1。 那么在10中针对垃圾回收都有哪些改进和改变呢? 严格的来说有两处是与垃圾回收有关的: 分别是JEP304和JEP307。 JEP 304: 垃圾回收器接口(Garb
ImportSource
2018/04/18
1.1K0
【Rust日报】2023-10-02 改进 Rust 宏中的自动完成功能
自动完成是 IDE 提供的一种功能,可以帮助开发者在编写代码时快速找到正确的关键字和参数。在 Rust 宏中,自动完成功能可能会出现不准确或不完整的情况。
MikeLoveRust
2023/10/04
2810
【Rust日报】2023-10-02 改进 Rust 宏中的自动完成功能
java运行时异常和非运行时异常区别_常用的运行时异常
Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示:
全栈程序员站长
2022/11/11
1.1K0
改进GPT的底层技术
code:通过进化、可塑性和 元 元学习 获得认知能力(4个时间维度的学习迭代)
CreateAMind
2023/09/01
1630
改进GPT的底层技术
故障改进
当你解决故障的时候,一定要防止对方对问题提前下结论,如果对方局部的证明是能证明结论是正确的,那从全局来看呢?不要在二手信息上深入讨论,不要用二手信息作为重要依据。
只喝牛奶的杀手
2022/11/14
6090
故障改进
运行时异常与非运行时异常的区别
java提供了两种异常机制。一种是运行时异常(RuntimeExepction),一种是检查式异常(checked execption)(非运行时异常)。
全栈程序员站长
2022/06/30
9560
PSO算法的改进策略
PSO(PSO——Particle Swarm Optimization)(基于种群的随机优化技术算法) 粒子群算法模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断改变其搜索模式。
里克贝斯
2021/05/21
1K0
PSO算法的改进策略
文献——Mantel test的改进
Link:http://sci-hub.tw/https://besjournals.onlinelibrary.wiley.com/doi/pdf/10.1111/2041-210X.13141
Listenlii-生物信息知识分享
2020/05/29
1.3K0
文献——Mantel test的改进
【Rust 日报】2021-11-10 好文推荐:如何改进限制过多的 Rust 库 API
这个 crate 原理仍然是将rust编译成 cdylib,然后在 c# 里面调用。不过将这个过程变得更容易了一点。
MikeLoveRust
2021/11/12
4990

相似问题

使用Twitter流API获取最新的tweet

12

使用流API twitter使用1.1获取tweet

14

Twitter流API:可以只过滤有坐标的tweet吗?

13

Twitter流api -限制tweet的数量

12

使用Twitter流API,是否可以只显示特定用户的tweet?

46
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档