Skip to content

Latest commit

 

History

History
26 lines (20 loc) · 1.16 KB

服务器后台进程的启动和退出.md

File metadata and controls

26 lines (20 loc) · 1.16 KB

服务器后台进程的启动和退出

作者: fergus (zfengzhen@gmail.com)

服务器后台进程启动和退出常用的一种方式

./gamesvr xxx xxx xxx start
./gamesvr stop

start命令, 新建一个进程, 并运行, 包括:

  1. 通过getopt_long解析参数, 存入相应字段
  2. 检查pid文件是否存在, 如果存在, 则退出
  3. daemon化
  4. 设置自定义信号捕获处理(比如处理stop命令)
  5. 初始化程序

stop命令, 新建一个进程:

  1. 判断pid文件是否存在
  2. 发送自定义stop命令, kill(proc_id, signal)
  3. 退出

注意点:

  1. 发送自定义stop命令后, 正在运行的程序主要工作是将主循环的标记位设为停止状态, 让程序继续跑完已经正在运行的事件, signal最好使用SIGRTMAX-1自定义信号, 如果使用SIGINT可能会对其他第三方库有影响, 导致在程序运行时出现异常
  2. stop命令进程中, 注意不要调用到一些start进程才会初始化的东西, 比如命令行解析后的文件, 以及日志系统的一些调用, 因为stop命令一般不会启动这些, 如果调用会导致异常