首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

PostgreSQL起步过程中的那些事十二:为postmaster进程设置信号句柄

2012-07-15 
PostgreSQL启动过程中的那些事十二:为postmaster进程设置信号句柄???? 现在离数据库启动过程的高潮只有几

PostgreSQL启动过程中的那些事十二:为postmaster进程设置信号句柄

?

??? 现在离数据库启动过程的高潮只有几步之遥,这几步比较简单,简要描述之。

??? 这几步包括:

?????? 八:设置虚拟文件描述符

?????? 九:初始化活跃backend进程列表

?????? 十:创建opts文件

?????? 十一:保存非默认GUC参数到文件

?????? 十二:为postmaster进程安装信号句柄

?????? 十三:为统计进程启动准备资源

?????? 十四:为autovuc进程启动做条件检查

?????? 十五:加载客户端认证配置文件

再接着调用pqinitmask方法和pqsignal方法,为postmaster进程安装信号句柄

??? pqinitmask();

??? PG_SETMASK(&BlockSig);

???? pqsignal(SIGHUP, SIGHUP_handler);? /* reread config file and have
??????????????????????????????????? * children do same */
??? pqsignal(SIGINT, pmdie); /* send SIGTERM and shut down */
??? pqsignal(SIGQUIT, pmdie);?? /* send SIGQUIT and die */
??? pqsignal(SIGTERM, pmdie);?? /* wait for children and shut down */
??? pqsignal(SIGALRM, SIG_IGN); /* ignored */
??? pqsignal(SIGPIPE, SIG_IGN); /* ignored */
??? pqsignal(SIGUSR1, sigusr1_handler); /* message from child process */
??? pqsignal(SIGUSR2, dummy_handler);? /* unused, reserve for children */
??? pqsignal(SIGCHLD, reaper);? /* handle child termination */
??? pqsignal(SIGTTIN, SIG_IGN); /* ignored */
??? pqsignal(SIGTTOU, SIG_IGN); /* ignored */
??? /* ignore SIGXFSZ, so that ulimit violations work like disk full */
#ifdef SIGXFSZ
??? pqsignal(SIGXFSZ, SIG_IGN); /* ignored */
#endif

其中pqsignal(SIGCHLD, reaper);是如果发生SINGCHLD信号,就reaper方法处理。这个后面数据库启动的时候会体现。


PostgreSQL起步过程中的那些事十二:为postmaster进程设置信号句柄

?

初始化信号句柄调用流程图

热点排行