node.js:有没有办法让child_process.exec()的回调函数返回进程PID

时间:2012-10-31 16:05:29

标签: node.js exec

Node.JS Exec问题:

我有一个产生多个进程的程序,我想通过在进程完成时捕获PID来记录进程的顺序。据我所知,标准回调不包括PID(stdout,stderr和error)。

我想避免使用spawn,但看起来我不得不这样做,除非任何善良的人有一些想法。

提前致谢。

编辑:

澄清:

var child = child_process.exec(..., function() {
    console.log( child.pid );
});

不适用于多个进程。这将返回最后一个进程,而不是触发回调的进程。

2 个答案:

答案 0 :(得分:4)

var child = child_process.exec(..., function() {
    console.log( child.pid );
});

我强烈建议您阅读the documentation - 您可能会在那里找到所有问题的答案。 :)

//编辑如果您使用循环来创建流程,那么就像这样使用它:

var create_child = function( i ) {
    // creates a seperate scope for child variable
    var child = child_process.exec(..., function() {
        console.log( child.pid );
    });
};

for (var i = 0; i < 100; i++) {
    // does not create a seperate scope
    create_child( i );
}

避免确定范围问题。

答案 1 :(得分:1)

经过一番搜索和短暂的喝咖啡休息后,我确信child_process.spawn是最佳选择。使对象数组处理进程,并在退出时删除这些进程对象似乎运行良好。

请参阅:https://gist.github.com/3990987