首先,我是一个完整的菜鸟,昨天开始使用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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句