网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

PostgreSQLserver端接收连接后fork进程

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

本文标题:PostgreSQLserver端接收连接后fork进程
标题网址:http://bjjierui.cn/article/pgoipp.html

其他资讯