[英]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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.