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 去掉自启动
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 去掉自启动
相关文章推荐
- linux怎么把自己的程序作为后台程序运行
- 让Java程序作为linux的Daemon后台运行
- 让Java程序作为linux的Daemon后台运行
- 让Java程序作为linux的Daemon后台运行 和 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
- Go程序在Linux作为后台应用daemon运行
- 设置linux启动时运行自己的程序
- Linux巩固记录(5) hadoop 2.7.4下自己编译代码并运行MapReduce程序
- 使用screen让程序在Linux后台运行
- PYTHON的程序在LINUX后台运行
- Linux中如何让进程(或正在运行的程序)到后台运行?
- linux使用putty连接后,后台运行程序的方法
- linux后台运行程序及恢复
- Unix/Linux中后台运行程序(断开shell连接后继续执行)的几种方式
- linux nohup命令使程序在后台运行的方法
- [linux] 如何在后台运行程序
- linux后台运行程序及恢复
- Linux 用户退出后,用户程序后台运行的方法介绍
- 普通程序作为系统服务在后台运行
- linux后台运行程序和退出方法
- linux后台运行程序(secureCRT断掉或关闭后继续运行程序)