Node: 如何控制子進程的輸出
阿新 • • 發佈:2017-12-30
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: 如何控制子進程的輸出