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

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

2012-08-09 09:47 441 查看
一.要使自己的程序作为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 去掉自启动
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: