2011-07-11 7 views
8

node.jsを使用してperlスクリプトをプロセスとして呼び出し、stdoutを1行ずつ読み戻すことはできますか?node.js perlスクリプトを呼び出してstdoutを取得

通常のjavascriptでは、これは通常は可能ではありませんが、node.jsを使用するサーバー側のスクリプトでは意味があるようです。

答えて

7

あなたは、ノードのを使用することができ、内蔵spawn子プロセスの実行のためのコマンド、およびcarrierstdoutのライン・バイ・ライン処理処理するために:

をインストールします。

$ npm install carrier 

コード:

var util = require('util'), 
    spawn = require('child_process').spawn, 
    carrier = require('carrier'), 
    pl_proc = spawn('perl', ['script.pl']), 
    my_carrier; 

my_carrier = carrier.carry(pl_proc.stdout); 

my_carrier.on('line', function(line) { 
    // Do stuff... 
    console.log('line: ' + line); 
}) 
+0

おかげで、これはちょうど答えになるかもしれないように見えます。私はこれを行かせます。 – evolution

6

はい、spawn/execを調べてください。

http://nodejs.org/docs/v0.4.8/api/child_processes.html

var exec = require('child_process').exec; 
exec("perl someperl.pl", function(err, stdout, stderr) { 
    /* do something */ 
}); 

私はあなただけのノードでそれをしないだろう、なぜわかりません。

+0

これは、stdout(およびstderr)を1つの大きなブロブに戻し、行単位ではないことにも注意してください。それがあなたにとって非常に重要であるなら、出力を改行文字に分割する必要があります。 –

関連する問題