用c++创建一个Linux上的Daemon程序,含SHELL管理脚本(三)
2012-05-27 17:26
645 查看
用c++创建一个Linux上的Daemon程序,含SHELL管理脚本(三)
本文提供了Daemon程序的SHELL管理脚本的一个简单例子,其他相关文章请见:
用c++创建一个Linux上的Daemon程序,含SHELL管理脚本(一)
用c++创建一个Linux上的Daemon程序,含SHELL管理脚本(二)
1、首先(一)中所述的代码中添加如下内容:
追加头文件引用:
#include <fstream>
在umask(0);之前添加如下代码:
std::ofstream _out("D_test.pid", std::ios_base::out);
_out << getpid() << std::endl;
_out.close();
2、编写如下脚本,并保存为D_test.sh:
#!/bin/bash
#service_exe_file= 'D_test'
#service_pid_file = 'D_test.pid'
service_pid =
service_wait_for_pid()
{
verb="$1"
pid_file="$2"
time_out="$3"
i=0
sleep 1
while ["$i" -ne "$time_out"]
do
case "$verb" in
'created')
test -s "$pid_file" && i = " &&
break
;;
'removed')
test ! -s "$pid_file" && i = ""
&& break
;;
*)
echo "Usage: wait_for_pid created/removed
pidfile timeout"
exit 1
;;
esac
i=$((i+1))
sleep 1
done
if [-z "$i"]
then
return 0
fi
return 1
}
service_usage()
{
echo "Usage: D_test.sh start|stop|status"
}
service_status()
{
ps aux | grep "$service_exe_file" | grep -c 'grep'
if [-n "$service_pid"]
then
kill -SIGUSR1 $service_pid
sleep 1
fi
}
service_start()
{
if [-n "$service_pid"]
then
echo "this service is already is running."
return 1
fi
"$service_exe_file"
service_wait_for_pid created "$service_pid_file" 60
service_status
}
service_stop()
{
if [-n "$service_pid"]
then
kill -SIGTERM $service_pid
service_wait_for_pid removed "$service_pid_file" 60
fi
ps aux | grep "$service_exe_file" | grep -V 'grep'
}
if [$# -ne 1]
then
service_usage
exit 1
fi
if [-s "$service_pid_file"]
then
service_pid=$(case "$service_pid_file")
fi
case "$1" in
'start')
service_start
;;
'stop')
service_stop
;;
'status')
service_status
;;
*)
service_usage
;;
esac
至此全文完
本文提供了Daemon程序的SHELL管理脚本的一个简单例子,其他相关文章请见:
用c++创建一个Linux上的Daemon程序,含SHELL管理脚本(一)
用c++创建一个Linux上的Daemon程序,含SHELL管理脚本(二)
1、首先(一)中所述的代码中添加如下内容:
追加头文件引用:
#include <fstream>
在umask(0);之前添加如下代码:
std::ofstream _out("D_test.pid", std::ios_base::out);
_out << getpid() << std::endl;
_out.close();
2、编写如下脚本,并保存为D_test.sh:
#!/bin/bash
#service_exe_file= 'D_test'
#service_pid_file = 'D_test.pid'
service_pid =
service_wait_for_pid()
{
verb="$1"
pid_file="$2"
time_out="$3"
i=0
sleep 1
while ["$i" -ne "$time_out"]
do
case "$verb" in
'created')
test -s "$pid_file" && i = " &&
break
;;
'removed')
test ! -s "$pid_file" && i = ""
&& break
;;
*)
echo "Usage: wait_for_pid created/removed
pidfile timeout"
exit 1
;;
esac
i=$((i+1))
sleep 1
done
if [-z "$i"]
then
return 0
fi
return 1
}
service_usage()
{
echo "Usage: D_test.sh start|stop|status"
}
service_status()
{
ps aux | grep "$service_exe_file" | grep -c 'grep'
if [-n "$service_pid"]
then
kill -SIGUSR1 $service_pid
sleep 1
fi
}
service_start()
{
if [-n "$service_pid"]
then
echo "this service is already is running."
return 1
fi
"$service_exe_file"
service_wait_for_pid created "$service_pid_file" 60
service_status
}
service_stop()
{
if [-n "$service_pid"]
then
kill -SIGTERM $service_pid
service_wait_for_pid removed "$service_pid_file" 60
fi
ps aux | grep "$service_exe_file" | grep -V 'grep'
}
if [$# -ne 1]
then
service_usage
exit 1
fi
if [-s "$service_pid_file"]
then
service_pid=$(case "$service_pid_file")
fi
case "$1" in
'start')
service_start
;;
'stop')
service_stop
;;
'status')
service_status
;;
*)
service_usage
;;
esac
至此全文完
相关文章推荐
- 用c++创建一个Linux上的Daemon程序,含SHELL管理脚本(一)
- 用c++创建一个Linux上的Daemon程序,含SHELL管理脚本(二)
- Linux:shell脚本反复运行同一个程序
- 一个自己写的自动格式化,开机挂载,创建用户和管理ACL权限的shell脚本
- 在linux下创建一个可运行shell脚本
- 通过C++和shell脚本去解析URL && c++调用shell脚本后将脚本的内容返回给程序
- shell下TCL脚本写的一个通讯录小程序
- 一个Linux系统安全设置的Shell脚本的分享(适用CentOS)
- 在Linux下如何用Shell脚本读写XML?现有一个config.xml(转)
- Linux下实现一个简单进度条和shell脚本实现彩色进度条
- linux下C程序插入执行shell脚本
- 在Linux下编写一个进度条的小程序:C和shell
- linuxC程序中获取shell脚本输出
- 一个监控LINUX目录和文件变化的Shell脚本分享
- linux C程序中获取shell脚本输出
- linux c程序中获取shell脚本输出
- linux c/c++ 程序设计(二)shell程序编程
- 用shell脚本写出检测/tmp/size.log文件,如果存在显示它的内容,不存在则创建一个文件将创建时间写入
- linux下shell对java程序的管理
- Shell脚本实例(一) 监控一个程序的运行情况