`

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


 

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

  • 大小: 68 KB
0
0
分享到:
评论

相关推荐

    PostgreSQL中文手册9.2

    一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: . 50 PostgreSQL PostgreSQL...

    postgresql--内核分析--多进程结构

    ### PostgreSQL内核分析——多进程结构 #### 一、进程的理解与创建 进程是一个正在运行的程序实例,它具有动态的特性。对于程序员而言,所编写的代码在未经编译之前仅是静态的源代码。当这些代码经过编译、链接等...

    Linux下PostgreSQL安装与开机启动

    为了让PostgreSQL能够在系统启动时自动运行,需要设置其为开机自启动服务。 ##### 操作命令: ```bash chmod a+x /postgresql-8.1.9/contrib/start-scripts/linux cp /tmp/postgresql-8.1.9/contrib/start-scripts/...

    关于PostGreSQL中的存储过程

    其中,存储过程是一个非常重要的概念,本文将对 PostgreSQL 中的存储过程进行详细的介绍和解释。 什么是存储过程 存储过程是一组为了完成特定任务而编写的 SQL 语句集合。它可以将复杂的操作封装起来,以便于重复...

    Postgresql存储过程

    Postgresql存储过程是指在Postgresql数据库中定义的一组SQL语句的集合,它可以完成复杂的操作,并且可以重复使用。Postgresql存储过程可以用来实现业务逻辑,减少数据库服务器的压力和网络传输的数据量。 一、存储...

    Go-PostgreSQLBGWorker用Go编写的PostgreSQL后台工作进程

    在PostgreSQL数据库系统中,后台工作进程(Background Worker)是一种扩展其功能的重要机制。这些进程独立于主要的数据库服务器进程运行,允许开发者实现自定义任务,如定期维护、监控或其他后台服务。Go语言以其...

    PostgreSQL 存储过程调试

    在IT行业中,数据库管理系统是核心组件之一,而PostgreSQL作为一款开源、强大的对象关系型数据库系统,被广泛应用于各种业务场景。本篇文章将深入探讨如何对PostgreSQL的存储过程进行调试,这对于优化数据库性能和...

    postgresql-42.3.1-API文档-中文版.zip

    Maven坐标:org.postgresql:postgresql:42.3.1; 标签:postgresql、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...

    PostgreSQL内核分析

    在启动过程中,`postmaster`会执行一系列初始化操作,比如创建共享内存段、设置信号处理程序等。初始化完成后,通过`ServerLoop`函数进入循环状态,等待并处理来自客户端的连接请求。对于崩溃或异常终止的子进程,`...

    Ubuntu 16.04设置PostgreSQL开机启动的方法

    总结:在Ubuntu 16.04上设置PostgreSQL开机启动,你需要安装`sysv-rc-conf`,复制启动脚本到`/etc/init.d/`,修改启动脚本中的配置,然后使用`chkconfig`设置服务为开机启动。完成这些步骤后,PostgreSQL会在每次...

    postgresql-42.2.5-API文档-中英对照版.zip

    Maven坐标:org.postgresql:postgresql:42.2.5; 标签:postgresql、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...

    jeecgboot(postgreSQL).pdf

    url: jdbc:postgresql://localhost:5432/postgres username: postgres password: root driver-class-name: org.postgresql.Driver ``` 此外,还需要添加 Druid 配置,以便监控数据库连接池的状态: ```...

    一套C#与PostgreSQL数据库完美结合的实例

    本套程序是在VS2005下C#开发,...在对PostgreSQL数据库进行操作时,用到了如何调用存储过程来完成各项操作。 将App_Data下的数据库文件导入到PostgreSQL 8.3版里面,库名为:HYGL 然后修改web.config中的配置即可使用

    PostgreSQL 14.1 中文手册

    PostgreSQL 14.1 手册 PostgreSQL 全球开发组 翻译:彭煜玮1,PostgreSQL中文社区2文档翻译组

    linux配置postgresql

    在 Linux 系统中,可以通过以下命令启动 PostgreSQL: ``` # su – postgres pg$ /usr/local/pgsql/bin/postmaster ``` 这将启动 PostgreSQL 数据库服务器,并允许用户访问数据库。 配置 PostgreSQL 数据库需要多个...

    PostgreSQL修炼之道 从小工到专家.pptx

    * PostgreSQL配置:包括设置数据库参数、内存管理和日志记录等方面。 数据类型与表达式 * 数据类型:包括整数、字符串、日期时间、布尔值等基本数据类型。 * 表达式:包括算术运算符、比较运算符、逻辑运算符和...

    PostGreSQL安装部署系列:Centos 7.9 安装指定PostGreSQL-15版本数据库

    初始化数据库是PostgreSQL安装过程中必不可少的一步,可以通过执行以下命令完成: ```bash sudo /usr/pgsql-15/bin/postgresql-15-setup initdb ``` 初始化完成后,将会创建数据库目录并设置默认权限。 ##### 3.4...

    postgresql存储过程

    PostgreSQL存储过程是一种数据库编程的方法,它允许用户在数据库中定义和执行复杂的操作逻辑,而不仅仅是简单的查询。存储过程在数据库管理系统中起着至关重要的作用,它们可以提高性能,增加安全性,减少网络流量,...

    postgresql-42.2.2-API文档-中文版.zip

    Maven坐标:org.postgresql:postgresql:42.2.2; 标签:postgresql、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...

    postgresql ubantu离线安装版

    PostgreSQL是一种开源的对象关系型数据库管理系统(ORDBMS),它在Ubuntu操作系统上广泛使用,尤其在需要稳定性和高性能的环境中。Ubuntu离线安装版的PostgreSQL适用于那些没有互联网连接或者网络带宽有限的环境,...

Global site tag (gtag.js) - Google Analytics