2011-07-15 110 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

的答案都不對我。儘管如此。

​​