#winapi #service #daemon #cross-platform #dbus #delete #stop

cross-platform-service

提供创建和管理跨平台服务的功能

1 个不稳定版本

0.1.0 2021年11月2日

#37#stop

MIT 许可协议

120KB
2K SLoC

cross-platform-service

"cross-platform-service" 包允许您为 Windows、Linux 和 macOS 开发跨平台服务和服务管理器。它支持安装、删除、启动和停止。

在 Windows 上,API 通过使用 microsoft/windows-rs 包来调用,如果服务有特殊的 Windows 需要,也可以调用 Windows API 目录。

在 Linux 上,使用 D-Bus 与 systemd 进行通信。默认行为是在 "/etc/systemd/system" 路径下定义 systemd 服务单元。

入门


use std::fs::OpenOptions;
use std::io::Write;
use std::sync::Arc;
use std::sync::atomic::{AtomicBool, Ordering};
use std::time::Duration;

use service_manager_rs::service::start_service;

const SERVICE_NAME: &str = "MyCrPlSVC";

fn main() {
    start_service(SERVICE_NAME, service_main);
}

fn service_main(running: Arc<AtomicBool>) {
    // The following code will run service for a minute and check if service stopped every
    // 100 milli-seconds
    // Return from this function will stop service
    for _ in 0..600 {
        if !running.load(Ordering::Relaxed) {
            // Write stopping service codes here
            // In linux SIGTERM signal set running to false and in Windows service stop command
            // will do the same

            return;
        }

        std::thread::sleep(Duration::from_millis(100));
    }
}

要在 Linux 上编译项目,需要 D-Bus 开发库,可以使用以下命令安装:

apt install libdbus-1-dev

示例

跨平台

安装跨平台服务

删除跨平台服务

启动跨平台服务

停止跨平台服务

Windows 服务

安装 Windows 服务

依赖项

~5–36MB
~641K SLoC