2011-07-15 4 views
3
var fp = 'ffprobe ' + fileName + ' -show_streams | grep ' 
var width = exec(fp+'width', function(err, stdout, stderr){ 
    return stdout; 
}); 
alert(stdout + 'random example'); 

後で使用できるように、プロセスの標準出力をどのように取得するのですか。ノードの子プロセスから値を取得する

+0

ハハハ!あなたのニックネが大好き。 – Frankie

答えて

5

ノードのexecは非同期です。つまり、execコールの下のコードは、子プロセスの実行が完了するまで待つという保証はありません。プロセスが終了したらコードを実行するには、結果を処理するコールバックを提供する必要があります。あなたのコードはそこから分岐することができます

var fp = 'ffprobe ' + fileName + ' -show_streams | grep '; 
var width = exec(fp+'width', function(err, stdout, stderr){ 
    console.log(stdout); 

    // ... process stdout a bit ... 

    afterFFProbe(stdout); 
}); 

function afterFFProbe(output) { 
    // your program continues here 
} 
+0

'stdout'が私のために空白になっています:(私は' stderr'を使用しなければなりませんでした – moeiscool

-1

私が正しくあなたを理解していた場合:

var fp = 'ffprobe ' + fileName + ' -show_streams | grep ', 
    value, 
    width = exec(fp+'width', function(err, stdout, stderr) { 
     value = stdout; 
     return stdout; 
    }); 
alert(value + 'random example'); 
+0

残念ながら、これは動作しません。 – ConfusedCoder

-1

を、私は、これはうまくいくかもしれないと思う:

var output = ""; 
var fp = 'ffprobe ' + fileName + ' -show_streams | grep ' 
var width = exec(fp+'width', function(err, stdout, stderr){ 
this.output = stdout; 
}); 
alert(output + 'random example'); 
0

上記の回答のどれものために働いていません私。これはしました。

​​
関連する問題