如何在 Node.JS 中获取生成的 child_process 的输出?
How to get the output of a spawned child_process in Node.JS?
首先,我是一个完全的菜鸟,昨天开始使用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(这也是我多年来第一次使用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);