3

子プロセスからの出力をキャプチャし、それを 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);
});

次のように変更すると、stdoutsub プロセスはノード プロセスの stdout に期待されるデータを出力します。

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

OSX でノード バージョン 0.8.1 を実行しています。

私がここに欠けているものはありますか?

4

1 に答える 1

0

私は同様の問題を抱えていました (特定のケースでは出力が欠落していました) が発生し、リスニングを開始する機会を得る前に、生成されたプロセスが出力を吐き出していると結論付けました。

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を読んで、これまでのところうまくいっています。

于 2013-02-08T08:29:25.677 に答える