main->PostmasterMain->ServerLoop:
for(;;){
...
//会阻塞在这,监视文件描述符的变化
selres = select(nSockets, &rmask, NULL, NULL, &timeout);
if (selres > 0){
for (i = 0; i < MAXLISTEN; i++){
//找一个有效的fd
if (ListenSocket[i] == PGINVALID_SOCKET)
break;
if (FD_ISSET(ListenSocket[i], &rmask)){
port = ConnCreate(ListenSocket[i]);->StreamConnection->accept
BackendStartup(port);//fork进程
|-- pid = fork_process();
| if (pid == 0){//child
| InitPostmasterChild();
| ClosePostmasterPorts(false);
| BackendInitialize(port);
| //该函数不会返回
| BackendRun(port);->PostgresMain:
| |-- for (;;){
| | if (send_ready_for_query){
| | ...
| | ReadyForQuery(whereToSendOutput);->pq_flush();->internal_flush->secure_write->secure_raw_write->send
| | send_ready_for_query = false;
| | }
| | firstchar = ReadCommand(&input_message);
| | switch(firstchar):{
| | case 'Q':exec_simple_query(query_string);
| | ...
| | }
| |-- }
| }
| ...father
|-- return STATUS_OK
//关闭father socket
StreamClose(port->sock);
ConnFree(port);
}
}
}
}
主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、
响应式网站设计、程序开发、微网站、微信小程序等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体,具备承接不同规模与类型的建设项目的能力。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章名称:PostgreSQLserver端接收连接后fork进程-创新互联
URL网址:
http://cdweb.net/article/gosco.html