本篇内容介绍了“Windows系统下的PostgreSQL进程fork”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!原稿用Markdown编写,拷贝进微信平台时段落有时发生反转,段落1、2、3变成段落3、2、1,发布前可能没有检查出来,遇到别扭的地方试试反过来读。Windows系统API我并不熟悉,所以本篇大致点出过程,更多细节还请阅读代码和详查微软文档。后边还会有一篇讲Windows下信号处理的模拟,内容跟这篇是关联的。这篇文章假定读者已经了解*nix的fork,如果不了解,请自行阅读相关资料。1、*nix下PG后端(backend)进程的发起:当然这里还有一些其他逻辑,不细表,有兴趣可以自己瞅瞅,都不复杂。2、函数 fork_process
代码位于 src/backend/postmaster/fork_process.c
, 没有什么很复杂的逻辑:注意:这里有preprocessor,上边这段代码是 #ifndef WIN32
控制,也就是只在 *nix下有效。3、Windows下的后端进程创建编译Windows版的方法,可以自行阅读,它不一样的地方之一是启用预处理符 EXEC_BACKEND
。这个开关在*nix一样有效,有兴趣可以自己试试启用它编译Linux版,个人感觉进程fork效率一定要低很多。函数 backend_forkexec
中:这里增加两个参数,一个是程序启动的文件名,一个是参数forkbackend,指定这是要启动一个fork后端的进程,启动过程中会有一些 香港云主机影响:4、参数传递fork()不需要考虑变量传递的问题,EXEC_BACKEND
时保存到临时文件里:这部分代码在 EXEC_BACKEND
函数实现 internal_forkexec
里,可以结合Windows文档去理解。5、为新进程准备共享内存if (!pgwin32_ReserveSharedMemoryRegion(pi.hProcess))
以后有机会写共享内存时再写,感觉尤其是Windows下挺有必要。6、进程创建在调用 save_backend_variables
之前:这里 cmdLine
是 安装路径postgres.exe --forkbackend nnn
,最后一个参数是参数处理句柄,第一个参数的计算前几天写过。从微软文档看,并没有说新创建的进程与postmaster之间是父子关系:Creates a new process and its primary thread. The new process runs in the security context of the calling process.7、后端进程启动不一样的处理分支Windows下调用 SubPostmasterMain
:此函数位于:src/backend/postmaster/postmaster.c
8、参数读入在Windows下,读取由 CreateFileMapping
创建的文件映射句柄:9、共享内存ReAttach“Windows系统下的PostgreSQL进程fork”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!
Python中怎么利用正则抓取数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、正则表达式基础(1)一般字符(2)预定义字符集(3)数量词(4)边界匹配备注:最常用的一种匹配方式(.*?)…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。