如何启动管道子进程以使process.stdout.columns仍然有效?

时间:2016-04-29 08:35:00

标签: node.js

//   test.js

if (process.argv.indexOf('child') >= 0) {
    console.log('child columns:', process.stdout.columns)
}
else {
    console.log('parent columns:', process.stdout.columns)
    pipedExec('node', ['test.js', 'child'], function(outdata) {
        console.log('   '+outdata.join('\n   '))
    })
}

function pipedExec (cmd, arg, callback) {
    var
        pipe = '',
        spawn = require('child_process').spawn,
        x = spawn(cmd, arg)
    function d(outdata) { pipe += outdata.toString() }
    x.stdout.on('data', d) 
    x.stderr.on('data', d)
    x.on('close', function() { callback(pipe.split('\n')) })
    return x
}

这是输出:

$ node test.js 
parent columns: 104
   child columns: undefined

如何使此代码按预期工作,即让孩子从process.stdout.columns获取正确的值?我可以继承句柄,但是管道不起作用。或者我可以通过程序args或通过文件(我现在这样做)传递列计数器,但我想简单地设置管道的列宽,如果可能的话。

0 个答案:

没有答案