1. 程式人生 > >Node: 如何控制子進程的輸出

Node: 如何控制子進程的輸出

log 屬性 man 如何 一個 一點 生成 var 返回

大家知道,在一個node程序中,如果當前進程想要生成一個子進程,它可以調用child_process模塊的spawn方法。spawn方法簽名如下:

child_process.spawn(command[, args][, options])

其中options對象的屬性stdio用來控制子進程的輸出。

當設置options.stdio為inherit時,子進程的輸出會被重定向到當前進程的stdout對象,也就是說子進程的輸出會直接顯示在當前進程的控

制臺中。

當設置options.stdio為pipe時,子進程的輸出會被重定向到spawn方法的返回值的stdout對象。這種情況稍微復雜一點。我來舉一個這種

場景的例子。假如我們想在當前進程中將node的版本號寫入一個文件,可以寫如下代碼:

 1 var fs = require(‘fs‘);
 2 var path = require(‘path‘);
 3 var {spawn} = require(‘child_process‘);
 4 
 5 var child = spawn(‘node‘, [‘--version‘], {
 6     stdio: ‘pipe 7 });
 8 
 9 var filePath = path.resolve(‘node-version.txt‘);
10 var destination = fs.createWriteStream(filePath);
11 child.stdout.pipe(destination);

子進程的輸出會被重定向到child.stdout, child.stdout是一個Readable stream, 所以可以用它的pipe方法將數據寫入到最終的文件。

Node: 如何控制子進程的輸出