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

一.要使自己的程序作为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 去掉自启动
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值