childprocess.stdout.on('data', callback) not fire



我正在尝试捕获子进程的输出并通过 websocket 发送,但我在捕获on.(data, callback)事件时遇到问题。

var subscriberProc = spawn('./stdoutsub', 
                      ['mytopic', '--clientid', 'node-dispatcher'], 
                      {cwd: '/Users/oskar/projects/others/rsmb_1/mac/'});
subscriberProc.stdout.on('data', function(data) {
  console.log('-> "' + data + '"');
  wsServer.send(data);
});

如果我更改为以下内容,标准输出子进程将打印到节点进程标准输出与预期数据。

var subscriberProc = spawn('./stdoutsub', 
                      ['mytopic', '--clientid', 'node-dispatcher'], 
                      {cwd: '/Users/oskar/projects/others/rsmb_1/mac/', 
                       stdio: 'inherit'});

我在 OSX 上运行节点版本 0.8.1。

我在这里错过了什么吗?

我遇到了类似的问题(在某些情况下我缺少输出),并得出结论,在我有机会开始侦听它之前,生成的进程正在喷出输出。

我通过使用类似于 Node.js 文档中的以下代码解决了它:

var fs = require('fs'),
    spawn = require('child_process').spawn,
    out = fs.openSync('./out.log', 'a'),
    err = fs.openSync('./out.log', 'a');
var child = spawn('prg', [], {
    detached: true,
    stdio: [ 'ignore', out, err ]
});

然后我读了出来.log到目前为止,事情对我来说一切顺利。

相关内容

  • 没有找到相关文章

最新更新