文章目录
- 1. signal 间接启动
- 1.1 signal callback 初始化
- 1.2 处理 child process 各种退出状态
- 1.3 start checkpointer process
1. signal 间接启动
checkpointer process 的主要入口点是 CheckpointerMain(), 它是从 AuxiliaryProcessMain() 调用的,AuxiliaryProcessMain() 已经创建了基本的执行环境,但尚未启用信号。
对于 checkpointer process 的启动初始化调用,是间接的。 它并非直接被postmaster调用初始化,而是中间经过了系列的
转换处理。想理解 checkpointer process 的启动过程,需要掌握下面几个信息:
(1)exit() 系统调用会触发 SIGCHILD 信号 (关键)
(2)PostmasterMain() 在进入ServerLoop()之前,会先初始化 startup process
(3)startup process 执行完成, 调用 proc_exit(0)
(4)ServerLoop() 的执行 与 startup process 是并发进行的( fork() 多进程)
(gdb