node.js - 如何在 Node.JS 中获取生成的 child_process 的输出?

标签 node.js shell output child-process spawn

首先,我是一个完全的菜鸟,昨天开始使用 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);

关于node.js - 如何在 Node.JS 中获取生成的 child_process 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36934749/

相关文章:

node.js - 检查 PostgreSQL v9.5+ 中的 jsonb 对象内部是否存在键

linux - 远程搜索文件中的文本

c - 如果我们将打印结构变量本身,程序的行为会是什么

c++ - 一个奇怪的 C++ 错误,可能是相对于 long long 类型

node.js - Express中如何访问 "?"之后的GET参数?

css - 静态文件未提供给我的个人博客页面

linux - 使用 mkdir 和 touch 创建目录结构

c - "Freezing"控制台中的输入行并打印在上面的行上?

node.js - 如何在 npm 运行时设置 Windows 控制台的标题?

bash - 是否可以使用 xmlstarlet 或其他 bash 工具在 xml 文件内注释/取消注释标签