提示
官方使用的是 C++
来编写的,但是本人目前 C
还没有掌握, C++
先放一放。
首先,一个完整的命令行程序应该包含哪些功能?
- 命令行参数解析
- 配置文件解析
- 打印帮助信息和版本信息
- 信号处理
- 日志、pid文件
- 如果是服务端长时间运行后台程序,还需要看门狗(崩溃自动重启)
下载文件:hmain_test.cpp
hmain_test
提供了打印帮助信息、打印版本信息、测试配置文件、后台运行、创建pid文件、查看进程状态、开始|停止|重启进程、 master-workers
多进程模式、崩溃自动重启等功能。
流程图如下:
提示
master-workers
进程模式是受 nginx
启发, master
即看门狗进程,负责 worker
的崩溃重启,也可以通过 master
向 worker
发送信号,如 hmain_test -s reload
重新加载配置文件。单独 kill
掉某个 worker
进程,是会被 master
重新 fork
出来的,需要通过 sudo killall hmain_test
杀死所有进程或者 hmain_test -s stop
发送停止信号。