最近在学习golang,众所周知,golang中的goroutine和channel 作为golang中的扛鼎之作,换句话说,不会灵活运用goroutine和channel,那么就不能算是真正了解了这门语言。
而goreman作为一款轻量级的多进程管理工具,代码量只有不到1000行,然而使用了许多巧妙地设计,和大量使用goroutine和channel,以及使用了golang的rpc,net,flag,context等工作中出镜率极高的包,是学习golang的佳作,那么,现在就让我们一起来看看吧!
goreman源码地址:https://github.com/mattn/goreman
先附上goreman的架构图

main函数作为程序的入口,做了一些系统的初始化,和根据用户行为调用各自的处理函数
func main() {
var err error
//初始化一些系统配置
cfg := readConfig()
if cfg.BaseDir != "" {
err = os.Chdir(cfg.BaseDir)
if err != nil {
fmt.Fprintf(os.Stderr, "goreman: %s\n", err.Error())
os.Exit(1)
}
}
//解析命令行参数
cmd := cfg.Args[0]
switch cmd {
case "check":
err = check(cfg)
case "help":
usage()
case "run":
if len(cfg.Args) >= 2 {
cmd, args := cfg.Args[1], cfg.Args[2:]
err = run(cmd, args, cfg.Port)
}

最低0.47元/天 解锁文章
355

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



