3

Node.JS 执行问题:

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

我想避免使用 spawn,但看起来我必须这样做,除非任何善良的灵魂有一些想法。

提前致谢。

编辑:

澄清:

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

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

4

2 回答 2

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

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

// 编辑如果你使用循环来创建进程,那么使用它:

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 );
}

以避免范围界定问题。

于 2012-10-31T16:13:43.370 回答
1

经过一番搜索和短暂的咖啡休息后,我确信 child_process.spawn 是要走的路。制作一个对象数组来处理进程,并在退出时删除这些进程对象似乎效果很好。

见:https ://gist.github.com/3990987

于 2012-10-31T19:51:08.350 回答