在网上找了许多资料,发现不同系统下的编写方法有点不同,这里用的了ubuntu下的方法,供参考:
先写一下小程序运行 , init_daemon:
1 #include2 #include 3 4 int main() 5 { 6 daemon(0,0); // 将进程声明为守护进程 7 8 int i = 0 ; 9 while(1)10 {11 i++ ;12 sleep(100000);13 }14 }
编译,生成可执行文件: gcc -c init_daemon gcc -o init_daemond init_daemon.o ( 这里守护进程一般在文件后面加个d )
下面写bash文件,注意这个文件名一定要与程序名一致 ,这里文件名为: init_daemond,创建后修改文件属性为 sudo chmod +x init_daemond :
1 #! /bin/sh 2 3 ### BEGIN INIT INFO 4 # Provides: 5 # Description: A simple example for daemon app 6 ### END INIT INFO 7 8 9 if [ -f /etc/init.d/functions ]10 then11 . /etc/init.d/functions12 else13 . /lib/lsb/init-functions14 fi15 16 NAME=Example_Daemond17 DAEMON=/usr/bin/init_daemond18 LOCKFILE=/var/lock/subsys/$DAEMON19 PIDFILE=/var/run/$NAME.pid20 21 #start function 22 start(){23 echo -n "Starting daemon: "$NAME24 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON25 echo "."26 }27 #stop function28 stop(){29 echo "Stopping $DAEMON ..."30 if pidof $DAEMON > /dev/null; then31 killall -9 $DAEMON > /dev/null32 rm -rf $PIDFILE33 echo "Stop $DAEMON Success..."34 fi 35 }36 37 38 #restart function39 restart(){40 start41 stop42 }43 44 #status function 45 status(){46 if pidof -o %PPID $DAEMON > /dev/null; then47 echo $NAME" is running..."48 exit 049 else50 echo $NAME" is not running..."51 exit 152 fi53 }54 55 56 case "$1" in57 start)58 start59 ;;60 stop)61 stop62 ;;63 reload|restart)64 stop65 sleep 266 start67 ;;68 status)69 status70 ;;71 *)72 echo $"Usage: $0 {start|stop|restart|status}"73 exit 174 esac
然后可以用service 命令启动守护进程:
1 service init_daemond start 2 service init_daemond stop3 service init_daemond status
可以用ps -ef 命令来查看守护进程的运行