Выполнить дочерний процесс с помощью nodejs

Я пытаюсь создать эмулятор с помощью nodejs, используя comamnd line iam, используя это

C:\Program Files\Genymobile\Genymotion>player --vm-name "Samsung Galaxy Note 2 - 4.3 - API 18 - 720x1280"

я хочу o perfrom это в nodejs мой код

var exec = require('child_process').execFile,
 child;

var getVms = function () {

 var device = 'Samsung Galaxy Note 2'
 var version ='4.3' 
 //command = process.env.GENY
 command = "C:\Program Files\Genymobile\Genymotion"
 command += "\\player"
 command += " --vm-name"
 command += " \"" + device + " - " + version + " - API 18 - 720x1280"+"\"";
console.log(command)
 var child = exec(command);
 child.stdout.on('data', function(data) {
 console.log('stdout:---------------------- ' + data);
 });
 child.stderr.on('data', function(data) {
 console.log('stdout err:---------------------- ' + data);
 });
 child.on('close', function(code) {
 console.log('closing code:---------------------------- ' + code);
 });
}
getVms();

но я получаю вывод

closing code:---------------------------- -1

с выходом эмулятора. Неправильно с моим кодом

1 ответ

Если вы хотите выполнить файл, вы также можете попробовать spawn. И вы должны знать, что аргументы передаются как массивы. Попробуйте это:

var spawn = require('child_process').spawn;

exports.getVms = function (req, res) {
 process.chdir("C:\\Program Files\\Genymobile\\Genymotion");
 var execCmd = './player';
 var args = ["--vm-name", " \"" + device + " - " + version + " - API 18 - 720x1280"+"\""];
 var spw = spawn(execCmd, args);

 spw.stdout.on('data', function (data) {
 var str = data.toString()
 res.send(str);
 });

 spw.stderr.on('data', function (data) {
 console.log('ps stderr: ' + data);
 res.send(500);
 });

 spw.on('close', function (code) {
 console.log('process exit code ' + code);
 });
}

licensed under cc by-sa 3.0 with attribution.