从节点子进程中检索值

时间:2011-07-15 19:37:36

标签: javascript node.js

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

如何让stdout'退出'以便我以后可以使用它。

4 个答案:

答案 0 :(得分:5)

Node的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
}

答案 1 :(得分:0)

上述答案都不适合我。尽管如此。

var probeCommand = 'rtsp://xx.xx.xx.xx/axis-media/media.3gp'
exec('ffprobe '+probeCommand+' | echo ',function(err,stdout,stderr){
    console.log(stdout+stderr)
})

答案 2 :(得分:-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');

答案 3 :(得分:-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');