QtService实现后台服务linux,windows

ma1.QtService下载使用

地址:https://github.com/qtproject/qt-solutions

windows项目添加文件

qtservice_p.h,qtservice.h,qtservice.cpp,qtservice_win.cpp文件。

linux项目添加文件

qtservice_p.h,qtservice.h,qtservice.cpp,qtservice_unix.cpp,qtunixserversocket.h,qtunixserversocket.cpp,qtunixsocket.h,qtunixsocket.cpp文件。

示例代码

myService.h

#pragma once
 
#include <QObject>
#include "../qtservice/src/qtservice.h"
class myService : public QtService<QCoreApplication>
{
public:
	myService(int argc, char **argv);
	~myService()override;
protected:
	void start()override;
	void stop()override;
	void pause()override {}
	void resume()override {}

};

myService.cpp

#include "myService.h"
#include <QDebug>
 
myService::myService(int argc, char **argv) : QtService<QCoreApplication>(argc, argv, "QtServiceDemo")
{
	setServiceDescription("QtService Demo");
	setServiceFlags(QtServiceBase::CanBeSuspended);
}
 
myService::~myService()
{
}
 
void myService::start()
{
	qDebug()<<"myService start";
}
 
void myService::stop()
{
    qDebug()<<"myService stop";
}

main.cpp 


#include "myService.h"
#include <QtWidgets/QApplication>
 
int main(int argc, char *argv[])
{

 
	myService service(argc, argv);
	return service.exec();
}

2.windows服务注册脚本

服务操作指令可以写进batch脚本,然后以管理员身份运行。
比如 你的 MyService.exe 在C盘根目录

1)启动服务 start.bat文件:

@echo ------------Install MyService Name begin--------------
@echo off
@sc create "MyService Name" binPath="%~dp0MyService.exe" 
@sc config "MyService Name" start=AUTO
@net start "MyService Name"
@echo off
@echo ------------Install MyService Name Success--------------


2)卸载服务 stop.bat文件:

@echo ------------uninstall MyService Name begin--------------
@net stop "MyService Name"
@sc delete "MyService Name"
@echo ------------uninstall MyService Name Success--------------

3.linux服务注册脚本

myService.service

#Systemd unit file for myService
[Unit]
Description= myService
After=syslog.target network.target

[Service]
Type=forking

ExecStart=/home/myService/StartUp.sh
ExecStop =/home/myServicet/ShutDown.sh

User=root
Group=root
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

 copy myService.service /etc/systemd/system

  systemctl daemon-reload

  systemctl start myService.service //启动服务

  systemctl stop myService.service //停止服务

相关推荐

  1. QtService实现后台服务linux,windows

    2024-07-20 00:10:02       17 阅读
  2. Nestjs后台服务

    2024-07-20 00:10:02       16 阅读
  3. QtService、托盘程序使用

    2024-07-20 00:10:02       58 阅读
  4. C#请求队列后台服务

    2024-07-20 00:10:02       44 阅读
  5. express框架搭建后台服务

    2024-07-20 00:10:02       44 阅读
  6. ubuntu23设置kibana后台启动服务

    2024-07-20 00:10:02       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 00:10:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 00:10:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 00:10:02       45 阅读
  4. Python语言-面向对象

    2024-07-20 00:10:02       55 阅读

热门阅读

  1. wpf 启动文件的设置

    2024-07-20 00:10:02       15 阅读
  2. WPF中MVVM常用的框架

    2024-07-20 00:10:02       17 阅读
  3. 代码随想录算法训练营第三十四天

    2024-07-20 00:10:02       17 阅读
  4. ES6 数值的扩展(十八)

    2024-07-20 00:10:02       12 阅读
  5. 从零开始学习嵌入式----数据结构之链表

    2024-07-20 00:10:02       19 阅读
  6. Nestjs后台服务

    2024-07-20 00:10:02       16 阅读
  7. 昇思MindSpore 应用学习-ResNet50迁移学习-CSDN

    2024-07-20 00:10:02       18 阅读
  8. GitHub每日最火火火项目(7.19)

    2024-07-20 00:10:02       18 阅读
  9. bug-前端解决node-sass和sass-loader兼容问题

    2024-07-20 00:10:02       15 阅读
  10. 设计模式七大原则(七)合成复用原则

    2024-07-20 00:10:02       12 阅读