簡體   English   中英

如何獲取Node.JS中生成的child_process的輸出?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM