Node JS:执行命令行并异步获取输出

 yangchang78179 发布于 2023-01-16 12:51

如何运行命令行并尽快获取输出以显示它们.

例如,如果在Linux系统上运行ping命令,它将永远不会停止,现在是否可以在命令仍在处理时获取响应?或者让我们接受apt-get install命令,如果我想在运行时显示安装进度怎么办?

实际上我正在使用这个函数执行命令行并获取输出,但是在命令行结束之前函数不会返回,所以如果我运行ping命令它将永远不会返回!

var sys     = require('sys'),
    exec    = require('child_process').exec;

function getOutput(command,callback){
    exec(
        command, 
        (
            function(){
                return function(err,data,stderr){
                    callback(data);
                }
            }
        )(callback)
    );
}

Ben Fortune.. 6

尝试使用spawn而不是exec,然后您可以点击流并收听数据和结束事件.

var process = require('child_process');

var cmd = process.spawn(command);

cmd.stdout.on('data', function(output){
    console.log(output.toString()):
});

cmd.on('close', function(){
    console.log('Finished');
});

//Error handling
cmd.stderr.on('data', function(err){
    console.log(err);
});

请参阅Node.js文档spawn:https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有