2015-12-02 93 views
0

我想在窗口上產生子進程來打開終端(cmd.exe)。我得到了一切工作,除了我無法將數據從子進程傳輸到父進程。我想在父進程中訪問終端的輸出。這裏是我的代碼:Node.js - 帶spawn的子進程:無法從子進程流數據

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

    var child = spawn('cmd', [ '/c', 'start'], { 
     cwd: '{path-to-folder}' 
     }); 


    child.stdout.on('data', function (data) { 
     console.log(data); 
    }); 

    child.stderr.on('data', function (data) { 
     console.log(data); 
    }); 

    child.on('close', function() { 

     console.log('close'); 
    }) 

我真的被卡住了,所以任何幫助或tipp將是真棒!提前致謝!

回答

1

這是因爲你正在新的終端會話中啓動新的shell。您只能從運行相同終端會話的命令攔截輸出。

例如,如果你改變startdir你必須輸出:

var child = spawn('cmd', [ '/c', 'dir'], { 
    cwd: '.' 
    }); 
child.stdout.on('data', function (data) { 
    console.log(data.toString()); 
}); 

卷在驅動器C沒有標籤。 卷序列號爲9401-94AE

Directory of C:\Temp 


12/02/2015 01:29 PM <DIR>   . 
12/02/2015 01:29 PM <DIR>   .. 
12/02/2015 01:30 PM    403 test.js 
       4 File(s)  10,423,442 bytes 
       4 Dir(s) 12,869,840,896 bytes free 

close