对ListenSocket 的研究(一)

简介:
为了对 postmaster.c 中的 ListenSocket 进行研究,先将其代码做一个概括(大部分代码省略):

复制代码
/*                                            
 * Postmaster main entry point                                            
 */                                            
int                                            
PostmasterMain(int argc, char *argv[])                                            
{                                            
    ……                                     
    status = ServerLoop();                 
    /*                                        
     * ServerLoop probably shouldn't ever return, but if it does, close down. 
     */                                        
    ExitPostmaster(status != STATUS_OK);   
    return 0;  /* not reached */                    
}
复制代码
然后添加我自己的代码后变成如下样子:

复制代码
/*                                            
 * Postmaster main entry point                                            
 */                                            
int                                            
PostmasterMain(int argc, char *argv[])                                            
{                                            
    ……                        
        /*added by gaojian begin*/
        for (i = 0; i < MAXLISTEN; i++)                            
        {                            
          if (ListenSocket[i] != PGINVALID_SOCKET){                        
            frpintf(stderr, "ListenSocket[%d] is: %d. \n", i,ListenSocket[i]); 
          }else{  break;  }    
        }            
        /*added by gaojian end*/                
                                            
    status = ServerLoop();                 
    /*                                        
     * ServerLoop probably shouldn't ever return, but if it does, close down.
     */                                        
    ExitPostmaster(status != STATUS_OK);                                        
                                            
    return 0;  /* not reached */                    
}    
复制代码
启动后运行的结果是显示两行信息:
ListenSocket[0] is 3.
ListenSocket[1] is 4.

至于为何是两行结果,这两行结果在 ServerLoop()中又如何起作用,还有待进一步研究。







本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/07/20/2600628.html,如需转载请自行联系原作者
目录
相关文章
|
10月前
|
监控 Java 数据库
zabbix灵活的数据收集方式
zabbix灵活的数据收集方式
208 8
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
城市大脑 人工智能 运维
城市大脑 | 城市中枢系统与数字驾驶舱
本文介绍了城市大脑 | 城市中枢系统与数字驾驶舱的方案概述,方案价值及优势以及最佳实践。
城市大脑 | 城市中枢系统与数字驾驶舱
|
运维 前端开发 BI
金蝶云星空打通钉钉OA审批
解锁钉钉连接平台,实现销售、客户管理和业务数据流程一体化。
金蝶云星空打通钉钉OA审批
|
消息中间件 Oracle 关系型数据库
Flink CDC (Change Data Capture)
Flink CDC (Change Data Capture) 是一种基于 Flink 的流式数据处理技术,用于捕获数据源的变化,并将变化发送到下游系统。Flink CDC 可以将数据源的变化转换为流式数据,并实时地将数据流发送到下游系统,以便下游系统及时处理这些变化。
828 1
|
网络协议
出现“Could not resolve host: www.github.com; Unknown error”错误解决
出现“Could not resolve host: www.github.com; Unknown error”错误解决
989 0
|
算法 C++
【基础算法】圆周率的多种方法求算 & C++实现
一个圆如下面左图所示,其半径为1,其内部内接一个正六边形。设正六边形的边长为y1。由几何知识可得知y1=1,所以圆的周长可近似为正六边形的周长C=6×y1=6.所以圆周率为前面的近似圆周长与圆直径之比,即C/2= 3≈π,这就是按照割圆法来得到圆周率近似值的方法。
1069 0
【基础算法】圆周率的多种方法求算 & C++实现
|
云安全 安全
一图读懂云安全中心2.0,一体化安全运营加速落地
一图读懂云安全中心2.0,一体化安全运营加速落地
361 0
|
算法 Java 程序员
如何使用IDEA断点调试(debug), 用图文并茂的方式来教你
如何使用IDEA断点调试(debug), 用图文并茂的方式来教你
如何使用IDEA断点调试(debug), 用图文并茂的方式来教你
|
存储 安全 小程序
如何使用 FlowUs 、Notion 等笔记软件中进行文件管理?
文件管理中常见的问题 缺少秩序 相信很多人从学生时代,便开始被文件管理所苦恼。这一状态甚至延伸到了进入职场以后。在我们的笔记本桌面文件夹或者下载文件夹,经常可以看到各种堆积如山的文件十分混乱摆放在一起。我们看到的是一座文件堆积的垃圾山。在我们需要的时候,却经常找不到自己所需要的文件。我们的文件缺少秩序,是文件管理所遇到的第一个问题。究其原因,是因为我们懒,没有及时整理文件吗?或许是,但这不是全部原因,也不是主要原因。
759 0
如何使用 FlowUs 、Notion 等笔记软件中进行文件管理?