美文网首页
child_process

child_process

作者: 小虾米QAQ | 来源:发表于2018-02-04 17:16 被阅读46次

    在使用 child_process 模块中的 exec 、execFile、spawnSync、execFileSync、execSync 方法时需要注意其 options 参数中的 maxBuffer 项。

    以上方法在执行时会在内存中建一个 buffer 来缓冲组合所有的输出数据,而 maxBuffer 则是指定该 buffer 大小的地方。如果输出超过指定的大小则会报 maxBuffer exceeded 的错误。

    解决方案是执行的时候估计好大小,设置更大的 maxBuffer:

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

    var child = exec('ls -lah', {

        encoding: 'utf8',

        timeout: 0,

        maxBuffer: 5000 * 1024, // 默认 200 * 1024

        killSignal: 'SIGTERM'

    }, function(err, stdout, stderr) {

        console.log(stdout);

    });

    或者是用 spawn 的 .on(‘data’) 事件触发时,手动拼接数据到 .on(‘close’) 事件触发的时候获得完整数据。

    相关文章

      网友评论

          本文标题:child_process

          本文链接:https://www.haomeiwen.com/subject/phomzxtx.html