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 去掉自启动
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 Service Wrapper将java程序作为linux服务并且开机自动启动
- 让Java程序作为linux的Daemon后台运行
- Go程序在Linux作为后台应用daemon运行
- 让Java程序作为linux的Daemon后台运行
- 利用Screen实现Linux程序后台运行
- linux将程序放在后台运行
- 让java程序在Linux后台运行
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- Linux命令:后台运行程序、批处理、开机运行-linux定时任务
- [linux] 如何在后台运行程序
- linux后台运行程序及恢复
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- C#之使用NotifyIcon实现任务栏托盘菜单,图标闪烁效果及气泡提示 很多程序是只需要后台运行的,甚至不需要自己的应用界面。NotifyIcon提供了程序在任务栏的显示功能 程序下载链接如下
- 将linux程序或者脚本的后台运行
- linux下利用nohup后台运行jar文件包程序
- Linux中让程序或者命令后台运行的方式
- linux使用nohup命令后台运行程序
- 使程序在Linux下后台运行
- linux nohup命令实现退出终端后程序继续后台运行