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方法处理。这个后面数据库启动的时候会体现。


 

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值