V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kururu
V2EX  ›  Node.js

关于 node.js 中的子进程可否实时获取标准输出?

  •  
  •   kururu · 2014-07-23 14:39:07 +08:00 · 5141 次点击
    这是一个创建于 3564 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想要调用自己写的C++控制台程序,用node-webkit封装界面,请问node.js里面的子进程模块是不是只能在子进程运行结束之后才能返回标准输出?有没有办法可以实现实时获取输出呢?
    2 条回复    2014-07-24 13:52:26 +08:00
    fansekey
        1
    fansekey  
       2014-07-23 19:01:01 +08:00
    var spawn = require('child_process').spawn;

    var h = spawn('ls', ['-l', '.']);

    h.stdout.on('data', function (s) {
    console.log(s.toString());
    });

    h.stdout.on('end', function () {
    console.log('ls done');
    });

    可以这么做;子进程的h.stdout其实是个流,你可以这么边执行边获取子进程的标准输出。
    stormslowly
        2
    stormslowly  
       2014-07-24 13:52:26 +08:00
    h.stdout.pipe( your stream handler goes here )
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4016 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:17 · PVG 18:17 · LAX 03:17 · JFK 06:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.