NodeJS-child_process.execSync ...提供了自定义的stdio(stdin,stdout,stderr)函数,这些函数也是“继承”的

时间:2019-01-25 12:49:23

标签: node.js

鉴于下面的函数c(),我希望现在继承标准输出。

  

下面的代码应可以直接调用。

请注意,我希望异步执行 execSync ,而不是 exec

但是,我还希望能够读取通过管道传输到控制台的数据。

但是在将其传递给父进程(终端窗口)之前,我无法先包装管道数据并自己对其进行处理。

我试图创建一个 WriteStream ,希望我能够提供一个功能,在该功能中可以对数据进行分析,然后将其通过管道传递给父流程,但这证明很困难。

function c(command, options) {
        options || (options = {}); var mo = options.mo || (options.mo = {});

        mo.stdin      || (mo.stdin  = process.stdin )
        mo.stdout     || (mo.stdout = process.stdout)
        mo.stderr     || (mo.stderr = process.stderr)

        options.stdio || (options.stdio = [mo.stdin, mo.stdout, mo.stderr]);

        var child_process = require('child_process');

        try {
                var out = child_process.execSync(command, options);

                console.log(111, out); // Always null
        }
        catch(e) {
                console.log(222, 'Error occured: ', e);
        }

}

var command_1 = 'mvn clean install -DskipTests';
var command_2 = 'mvn --version';
var command_3 = 'passwd';

c(command_3, {
        mo : {
                // stdout : require('fs').createWriteStream("abcdef")
        }
});

0 个答案:

没有答案