您的位置:首页 > 运维架构 > Linux

linux怎么把自己的程序作为后台程序运行

2006-09-20 13:46 435 查看
一.要使自己的程序作为daemon进程,自己的程序需要遵循一些基本规则

   1.调用fork

   2.在子进程中调用setsid()

   3.把工作目录更改为根目录chdir("/"). (可选)

   4.关闭不需要的描述符 (可选)

 int main(int argc, char** argv )
{
  if( argc == 2 &&
  ( strcasecmp( argv[1],"-daemon" ) == 0) ) //精灵进程模式
 {
  pid_t pid = fork();
  if( pid <0 )
  {
   printf( "创建精灵进程失败!errorcode= %d[%s]",errno, strerror( errno ) );
   return (-1);
  }
  if( pid !=0 )
   exit(0);

  setsid();

  chdir("/");
 }

//程序的工作流程

}

 

二.在/etc/rc.d/init.d/目录下加入自己程序的服务启动脚本,如下

#!/bin/bash
#
# chkconfig: 2345 20 80
# description: start and stop the file transmit service for ***
#

ftdir=/home/test
echo "$ftdir"
[ -d $ftdir ] || exit 0

start() {
        cd "$ftdir"
        if [ -e ftsrv ];then
                ./ftsrv -daemon >/dev/null
        else
                echo "ftsrv is not in dir $ftdir"
        fi

        echo "ftsrv start completed"
}

stop() {
        pid=$( ps -ef|grep ftsrv|awk '{print $2}'|head -n 1)
        echo $pid
        kill -9 $pid
        echo "ftsrv stop completed"
}

restart() {
        stop
        sleep 1
        start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
esac

注意开始的chkconfig那行注释是必须要的,否则在下面调用chkconfig时就会出错

加了这个脚本以后就可以通过

service ftsrv start 启动服务
  service ftsrv sop 终止服务
  service ftsrv sop 重启服务

三.是自己的程序在系统启动的时候自启动

可以通过chkconfig --add ftsrv 使ftsrv在系统启动时自启动
可以通过chkconfig --del ftsrv 去掉自启动
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息