Przede wszystkim, jestem kompletnym noobem i zaczął używać node.js wczoraj (to był także mój pierwszy raz przy użyciu systemu Linux w roku), więc proszę być miły i wyraźnyJak uzyskać dane wyjściowe odrodzonego procesu child_process w pliku Node.JS?
Jestem obecnie dokonywania node.js program, który musi, między innymi, uruchamiać polecenia powłoki (głównie: montować dysk USB). obecnie używam
var spawn = require('child_process').spawnSync;
function shspawn(command) {
spawn('sh', ['-c', command], { stdio: 'inherit' });
}
shspawn('echo Hello world');
shspawn('mkdir newdir');
itd który jest naprawdę wygodny sposób, aby zrobić to za mnie. Problemem jest to, że chciałbym, aby zapisać dane wyjściowe, na przykład, „ls” polecenia w zmiennej, w taki sposób, jak
var result = shspawn('ls -l')
Czytałem kilka przykładów w Internecie, ale rzadko korzystają z ikry a kiedy to robią, to nie działa dla mnie (myślę, że mogę zrobić coś nie tak, ale znowu jestem noobem w węźle)
Jeśli masz lepszy pomysł niż używanie child_process_spawnSync, jestem otwarty na każdy pomysł, ale chciałbym jak najdłużej utrzymywać mój program bez pakietu :)
EDYCJA: Potrzebuję go do synchronicznej pracy! Właśnie dlatego zacząłem używać spawnSync. Będę używał niektórych komend, takich jak dd, które wymagają czasu i muszą zostać w pełni zakończone, zanim program przejdzie do innego polecenia.
To daje mi ten błąd: 'child.stdout.on ('dane', function() {console.log danych ('ls wyjściowe polecenia: "+ dane);}); ^ TypeError: Nie można odczytać właściwości 'on' null' – Squiller
zredagowałem odpowiedź z drobnymi zmianami i wydaje mi się, że działa ona dla mnie. Spróbuj ponownie. Używam wersji węzła "v4.2.4" BTW. –
Dobrze działa z funkcją odradzania, dziękuję :) Ale potrzebuję go do pracy z spawnSync, ponieważ chcę poczekać na zakończenie każdego polecenia przed przejściem do następnego. Na razie mam działającą funkcję, która wykonuje polecenie, ale NodeJS porusza się w programie, nawet zanim polecenie jest w stanie zwrócić wszystko. – Squiller