È possibile eseguire un programma esterno dall'interno di node.js? Esiste un equivalente a Python os.system()
o una libreria che aggiunge questa funzionalità?
È possibile eseguire un programma esterno dall'interno di node.js? Esiste un equivalente a Python os.system()
o una libreria che aggiunge questa funzionalità?
Risposte:
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
// result
});
child_process
.
exec ha una limitazione di memoria della dimensione del buffer di 512k. In questo caso è meglio usare spawn. Con spawn si ha accesso allo stdout del comando eseguito in fase di esecuzione
var spawn = require('child_process').spawn;
var prc = spawn('java', ['-jar', '-Xmx512M', '-Dfile.encoding=utf8', 'script/importlistings.jar']);
//noinspection JSUnresolvedFunction
prc.stdout.setEncoding('utf8');
prc.stdout.on('data', function (data) {
var str = data.toString()
var lines = str.split(/(\r?\n)/g);
console.log(lines.join(""));
});
prc.on('close', function (code) {
console.log('process exit code ' + code);
});
stderr
anziché stdout
. Nel mio caso, però, close
non arriverà mai ...
Il modo più semplice è:
const {exec} = require("child_process")
exec('yourApp').unref()
unref è necessario per terminare il processo senza attendere "yourApp"
Ecco i documenti di exec
Dalla documentazione di Node.js:
Il nodo fornisce una funzione popen (3) tridirezionale attraverso la classe ChildProcess.
child_process
modulo. Vedere la documentazione , che fornisce numerosi esempi chiari di vari casi d'uso.