为什么node.js可以在if语句中调用clustet.fork()?
对于一个典型的C程序,我们做这样的事情来创build一个新的过程:
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语句中创buildsubprocess? 为什么subprocess不跳过else块?
谢谢!
这是因为C fork()
和node.js cluster.fork()
以不同的方式工作。
在C中, fork()
创build一个当前进程的确切副本( fork()
返回的值除外),然后继续执行fork()
被调用时的两个进程。
在node.js中, cluster.fork()
使用相同的.js
入口点生成新的工作者node.js进程,但使用的环境稍有不同。 它还build立了IPC通道,用于在主进程和其工作者之间传递消息/文件描述符。