对于典型的C程序,我们这样做是为了创建一个新的过程:
int main(void)
{
pid_t childPID;
childPID = fork();
if(childPID >0){
do something
}
else if(childPID == 0){
do something
}
else {
do something
}
}
但是在node.js程序中,fork通常在if语句中完成:
var cluster = require('cluster');
if (cluster.isMaster) {
do something
cluster.fork()
}
else{
do something for the child process
}
为什么我们可以在Node.js的if语句中创建子进程?为什么子进程不跳过else块?
谢谢!
答案 0 :(得分:3)
这是因为C fork()
和node.js cluster.fork()
以不同的方式工作。
在C fork()
中创建当前进程的精确副本(fork()
返回值除外),然后从调用fork()
时继续执行这两个进程。< / p>
在node.js cluster.fork()
中生成具有相同.js
入口点的新工作者node.js进程,但使用稍微不同的环境。它还建立了一个IPC通道,用于在主进程及其工作程序之间传递消息/文件描述符。