微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取Node.JS中生成的child_process的输出?

首先,我是一个完整的菜鸟,并且昨天开始使用Node.JS(这也是我多年来第一次使用 Linux)所以请保持良好和明确

我目前正在制作Node.JS程序,其中包括启动shell命令(主要是:安装usb驱动器).
我正在使用

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

function shspawn(command) {
    spawn('sh',['-c',command],{ stdio: 'inherit' });
}

shspawn('echo Hello world');
shspawn('mkdir newdir');

这对我来说是一种非常舒适的方式.
问题是我想以一种方式存储变量中的“ls”命令的输出,例如

var result = shspawn('ls -l')

我在线阅读了一些例子,但他们很少使用spawn,当他们这样做时,它对我不起作用(我想我可能做错了,但我又是Node中的菜鸟)

如果你们有一个比使用child_process_spawnSync更好的想法,我会对任何想法持开放态度,但我希望尽可能长时间保持我的程序包免费:)

编辑:我需要它同步工作!这就是我开始使用spawnSync的原因.我将使用一些命令,如dd,这需要时间,需要在程序转移到另一个命令之前完全完成.

解决方法

你可以这样做,如下所示.
var spawn = require('child_process').spawn;
    // Create a child process
    var child = spawn('ls',['-l']);

    child.stdout.on('data',function (data) {
            console.log('ls command output: ' + data);
        });
    child.stderr.on('data',function (data) {
        //throw errors
        console.log('stderr: ' + data);
    });

    child.on('close',function (code) {
        console.log('child process exited with code ' + code);
    });

更新:使用spawnSync

var spawn = require('child_process').spawnSync;
    var child = spawn('ls',['-l','/usr']);
    console.log('stdout here: \n' + child.stdout);

原文地址:https://www.jb51.cc/nodejs/241236.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐