Golang(Go语言)中实现典型的fork调用
原文见:https://jiajunhuang.com/articles/2018_03_08-golang_fork.md.html
背景
在日常的系统编程中,我们经常有这样的需求:fork 多个子进程去执行任务。例如典型的 master-slave 架构便是这样的,fork 调用之后,父进程开始作为管理进程管理子进程,而子进程则开始执行处理请求的代码。但是在Go语言中,由于Go语言屏蔽了进程、线程的概念,而只提供了 goroutine 的概念,导致我们无法很好的直接操作 fork 调用。在Go语言中,此类解决方案只有以下三种:
这三个都类似于 fork + exec,但是没有类似C中的fork调用可以达到在fork之后根据返回的pid然后进入不同的函数的方案。原因主要是:<

在Go语言中,由于没有直接的fork调用来创建子进程,通常使用syscall.ForkExec, os.StartProcess或exec.Cmd来实现类似功能。这些方法不像C语言的fork,因为Go的多线程由runtime管理。本文探讨了如何利用Go特性模拟fork行为。"
116041580,10735509,Apache Solr XML XXE漏洞详解及复现,"['安全', 'XML', '漏洞分析', 'Apache', 'Solr']
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



