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