如何获得Node.JS中产生的child_process的输出?

首先,我是一个完整的noob,昨天开始使用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”命令在一个variables,像

 var result = shspawn('ls -l') 

我已经在网上阅读了一些例子,但很less使用产卵,当他们这样做时,它不适用于我(我想我可能做错了什么,但我又是一个在节点noob)

如果你们有比使用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);