平时经常性会需要写一些daemon服务,于是就写了一个简单的脚本,利用模板文件,可以自动生成一个简单的daemon进程,包括源文件和makefile,启停脚本,只需要直接添上业务逻辑即可。使用方式:./generate_daemon.sh <app name>。
工具的下载地址在这里: http://download.csdn.net/source/3242136
执行./generate_daemon.sh test,生成的目录结构如下,包括src,bin和etc目录和一个Makefile。
下面简单介绍一下生成的代码,大概有几点说明一下:
(1)daemon进程的上下文数据结构中,包括自己的pid,以及pid文件的path;另外有一个stop标志来控制进程的起停;
(2)每一个daemon进程都应该有自己的id号。编译之后的启停方式,应该类似这样:
./test --id=192.0.0.1 --daemon start
./test --id=192.0.0.1 stop
(2)version参数可以看到版本号,这里也就是编译的时间;help可以显示使用说明。
(3)进程第一次启动时,会将自己的pid写入一个文件,目前这个文件在tmp目录下,为进程名字+id号,写完之后会加锁。在stop进程时,会去读这个文件,并到/proc/pid目录下验证进程名字;如果start进程时,发现这个pid文件已经存在,会提示错误。-->如果想起多个进程,必须用不同的id来控制;
(4)stop进程,是用发送kill信号的方式来实现的,目前捕捉的信号包括SIGINT,SIGUSR1,SIGKILL,SIGQUIT;
(5)正常情况下,进程将死循环执行process函数,加上需要的业务逻辑即可。
(6)生成一个test进程,make之后启动脚本,可以看到进程正常运行ing:
最后把部分代码贴出来: