PostgreSQL server端接收连接后fork进程
admin
2023-05-20 21:43:31
0
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);
				}
			}
		}
	}


相关内容

热门资讯

美军称继续海上封锁伊朗,已改变... 当地时间8月3日,美国中央司令部表示,美军继续严格执行对伊朗的海上封锁。截至当天,美军已改变44艘商...
“控制”格陵兰岛,特朗普罕见列... 据美国《新闻周刊》和英国《独立报》8月2日报道,美国总统特朗普日前在接受采访时声称,格陵兰岛将在他本...
脑机接口,新突破,深度布局的1... (来源:逍遥财情) 8月1日,两项关于脑机接口行业的新国家标准开始实施,这两项标准相当于为整个行业制...
特朗普:与伊朗的谈判已开始,计... 当地时间8月3日,美国总统特朗普在社交平台“真实社交”(Truth Social)发文称,与伊朗的谈...
唐山电缆测绘现场案例 唐山电缆测绘现场案例 探测背景: 本次服务对象为唐山某测绘公司,因后期甲方需开展开挖作业,需提前明确...
聚焦能源与前沿科技!山西启动重... 为持续完善全省科技创新平台体系,夯实基础研究根基、打通科技成果产业化链条,加快培育新质生产力,赋能全...
四川:到2026年底推动阿里云... 《四川省推进算力设施优化布局提质建设和算电融合发展实施方案(2026—2028年)》近日印发。其中提...
瑙鲁正式更改国名 △瑙鲁(资料图)瑙鲁共和国政府日前在社交媒体上发布公告说,该国国名已由“Nauru”正式更改为“Na...
中国科学家首获威廉·诺德伯格奖... 当地时间8月3日,在意大利佛罗伦萨举办的第46届国际空间研究委员会(COSPAR)科学大会上,中国气...
和县科技馆开展“科普邂逅盛夏 ... 为丰富青少年暑期精神文化生活,普及推广自然科学知识,7 月 29 日,和县科技馆组织开展夏日主题科普...