Prima di tutto, io sono un noob completo e ha iniziato a utilizzare Node.JS ieri (è stata anche la mia prima volta ad usare Linux in anni) quindi cerca di essere gentile ed esplicitoCome ottenere l'output di un child_process generato in Node.JS?
Attualmente sto facendo un Node.JS programma che deve, tra l'altro, avviare i comandi della shell (principalmente: montare un'unità USB). Attualmente sto usando
var spawn = require('child_process').spawnSync;
function shspawn(command) {
spawn('sh', ['-c', command], { stdio: 'inherit' });
}
shspawn('echo Hello world');
shspawn('mkdir newdir');
ecc che è un modo molto comodo di farlo per me. Il problema è che mi piacerebbe memorizzare l'output, ad esempio, un comando "ls" in una variabile, in un modo come
var result = shspawn('ls -l')
Ho letto alcuni esempi online, ma che uso raramente di spawn e quando lo fanno, non funziona per me (credo che possa fare qualcosa di sbagliato, ma di nuovo sono un noob in Node)
Se voi ragazzi avete un'idea migliore di usare child_process_spawnSync sono aperto a qualsiasi idea, ma vorrei il più a lungo possibile per mantenere il mio programma senza pacchetti :)
EDIT: Ho bisogno che funzioni in modo sincrono! Ecco perché ho iniziato a usare spawnSync. Userò alcuni comandi come dd, che richiede tempo e deve essere completamente terminato prima che il programma passi a un altro comando.
per me motivo di questo errore: 'child.stdout.on ('dati', la funzione (i dati) {console.log ('ls output dei comandi: '+ dati);}); ^ TipoErrore: Impossibile leggere la proprietà 'on' di null' – Squiller
ha modificato la risposta con piccole modifiche e sembra funzionare per me. riprova. Sto usando la versione del nodo 'v4.2.4' BTW. –
Funziona bene con spawn, grazie :) Ma ho bisogno che funzioni con spawnSync, perché voglio aspettare che ogni comando finisca prima di andare a un altro. A partire da ora, ho una funzione funzionante che esegue il comando, ma NodeJS si avvia nel programma anche prima che il comando sia in grado di restituire qualcosa. – Squiller