qtService组件使用说明
一、 描述
QtService组件可用于开发Windows服务和Unix守护进程。
该项目提供的QtService模板类可用于实现服务应用程序,QtServiceController类可用于控制服务。
在Windows系统用服务控制管理器实现。
在Unix系统服务用守护进程实现。
二、 类说明:
1、 QtServiceController
QtServiceController类提供了一组函数,可实现从另外的应用程序来安装和运行服务并查询、控制其执行状态。
成员类型:
enum QtServiceController :: StartupType
启动类型:
常量 | 值 | 描述 |
QtServiceController :: AutoStartup | 0 | 随系统启动自动启动。 |
QtServiceController :: ManualStartup | 1 | 手动启动。 |
仅用于Windows环境
成员函数:
QtServiceController :: QtServiceController(const QString&name)
创建指定名称服务的控制器。
QtServiceController ::〜QtServiceController() [virtual]
销毁服务控制器。
bool QtServiceController :: install(const QString&serviceFilePath,constQString&account = QString(),const QString&password = QString()) [static]
为指定文件安装服务,如安装成功返回true,否则返回false。
在Windows中使用给定的帐户和密码安装服务到服务控制管理器中。
在Unix服务配置中,使用“QtSoftware”作为组织名称写入QSettings :: SystemScope。帐户和密码参数被忽略。
bool QtServiceController :: isInstalled()const
检测服务是否安装,如已安装则返回true; 否则返回false。
bool QtServiceController :: isRunning()const
检测服务运行状态,正在运行则返回true; 否则返回false。
bool QtServiceController :: pause()
暂停服务,成功暂停则返回true; 否则返回false。仅当服务状态为QtServiceBase :: CanBeSuspended时支持服务暂停。
bool QtServiceController :: resume()
服务继续,服务成功恢复,则返回true; 否则返回false。
bool QtServiceController :: sendCommand(int code)
将用户命令代码发送到服务,如请求成功发则返回true; 否则返回false。
该服务将调用QtServiceBase :: processCommand()实现。
QString QtServiceController :: serviceDescription()const
返回服务的描述。
QString QtServiceController :: serviceFilePath()const
返回服务相关的文件路径。
QString QtServiceController :: serviceName()const
返回服务名称。
bool QtServiceController :: start(const QStringList&arguments)
启动服务,并传递参数。启动成功则返回true; 否则返回false。
bool QtServiceController :: start()
启动服务,不传递参数。
StartupType QtServiceController :: startupType()const
返回服务启动类型。
bool QtServiceController :: stop()
停止服务。停止成功则返回true; 否则为false。
bool QtServiceController :: uninstall()
卸载服务,成功则返回true; 否则返回false。
使用系统的服务控制管理器卸载Windows服务。
在Unix服务配置中,使用QSettings :: SystemScope以“QtSoftware”作为组织名称来清除。
2、 QtServiceBase
QtServiceBase类提供了一个用于实现Windows服务和Unix守护进程的API。
服务通常是非交互式控制台应用程序。可以使用QtServiceController :: sendCommand()和QtService :: processCommand(),结合使用共享设置文件实现简单的通信。
服务应用程序的main函数实例:
int main(int argc, char **argv)
{
MyService service(argc, argv);
();
}
命令行参数说明:
短参数 | 长参数 | 说明 |
-i | -install | 安装服务。 |
-u | -uninstall | 卸载服务。 |
-e | -exec | 作为独立应用程序执行。 |
-t | -terminate | 停止服务。 |
-p | -pause | 暂停服务。 |
-r enum类型如何使用 | -resume | 恢复暂停的服务。 |
-c cmd | --command cmd | 将用户定义的命令代码cmd发送到服务应用程序。 |
-v | -version | 显示版本和状态信息。 |
缺省参数时,exec()将依次调用createApplication()、executeApplication()、start()函数后启动服务等待来自服务控制器的命令。
成员类型:
enum QtServiceBase :: MessageType
消息类型:
常量 | 值 | 描述 |
QtServiceBase ::Success | 0 | 操作已成功,例如服务已启动。 |
QtServiceBase ::Error | 1 | 操作失败,例如服务无法启动。 |
QtServiceBase :: Warning | 2 | 操作导致可能需要用户交互的警告。 |
QtServiceBase :: Information | 3 | 任何类型的通常非关键的信息。 |
enum QtServiceBase::ServiceFlag
flags QtServiceBase::ServiceFlags
服务标识:
常量 | 值 | 描述 |
QtServiceBase :: Default | 0x00 | 服务可以停止,但不会暂停。 |
QtServiceBase :: CanBeSuspended | 0x01 | 服务可以暂停。 |
QtServiceBase :: CannotBeStopped | 0x02 | 无法停止服务。 |
QtServiceBase :: NeedsStopOnShutdown | 0x04 | (仅限Windows)服务将在系统关闭之前停止。 |
ServiceFlags类型用QFlags <ServiceFlag>定义,其值可以采用“或”组合的形式存储。
成员函数:
QtServiceBase :: QtServiceBase(int argc,char ** argv,const QString&name)
创建服务实例,命名为name。调用exec ()函数后解析argc和argv参数,并被传递给应用程序的构造函数。应用程序类型由QtService子类确定。
服务既未安装也未启动。服务名称不能包含任何反斜杠,长度不超过255个字符。此外,该名称在系统的服务数据库中必须是唯一的。
QtServiceBase ::〜QtServiceBase() [virtual]
销毁服务对象。既不停止也不卸载服务。
void QtServiceBase :: createApplication(int&argc,char ** argv) [pure virtual protected]
使用argc和argv参数创建应用程序对象。
此函数仅在服务构造时未使用特定服务参数时使用,由exec()在调用executeApplication()和start()函数之前调用。可在构造需要额外参数的应用程序时重新实现createApplication()函数。
int QtServiceBase :: exec()
执行服务。
exec()函数将解析在argv中传递的特定服务参数,执行所需的操作,然后退出。没有服务特定参数时,exec()将依次调用createApplication()、executeApplication()、start()函数后返回,同时启动服务等待服务控制器的命令。
int QtServiceBase :: executeApplication() [pure virtual protected]
执行以前使用createApplication()函数创建的应用程序。
此函数仅在服务构造时未使用特定服务参数时使用,由exec()在调用createApplication()和start()两函数之间调用。
QtServiceBase * QtServiceBase :: instance() [static]
返回一个指向当前应用程序的QtServiceBase实例指针。
void QtServiceBase :: logMessage(const QString&message,MessageType type= Success,int id = 0,uint category = 0,const QByteArray&data = QByteArray())
写日志消息。
message:消息内容
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论